sed常用操作

sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序

语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!

替换示例

#hello替换为world
sed -i "s/hello/world/g" /home/test.txt

高级操作

#lren替换为主机名常量
sed -i "s/lren/$/g" /etc/hosts

常用替换操作

sed 's/^/添加的头部&/g' //在所有行首添加
sed 's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed '$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换2到5行
sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行


将开头的字符串"old"替换为"new"
sed 's/^old/new/' file.txt

只替换第一行开头的字符串"old"为"new",其他行不受影响:
sed '1s/^old/new/' file.txt

替换每行开头的字符串"old"为"new",所有行都受影响:
sed 's/^old/new/g' file.txt

只替换包含特定字符的行开头的字符串"old"为"new",其他行不受影响:
sed '/pattern/s/^old/new/' file.txt
删除
  • sed -i ‘/表达式/d’ 文件名
# 删除指定行号
sed -i '2d' a.txt
sed -i '1d' a.txt删首行
sed -i '$d' b.txt删尾行
sed -i '/hello/d' a.txt  #删除包含指定关键字的行