linux下流编辑器sed的使用

1.sed简介

sed是stream editor的简称,即流编辑器。

2.sed参数选项

1)、参数选项


-n      抑制自动(默认的)输出,读取下一个输入行
-e      执行多个sed指令
-f      运行脚本
-i      编辑文件内容
-i.bak  编辑的同时创造.bak的备份
-r      使用扩展的正则表达式

2)、命令参数


a       在匹配后追加
i       在匹配前插入
p       打印
d       删除
r/R     读取文件/一行
w       另存
s       查找字符串替换
c       替换整行
y       替换字符
h/H     复制拷贝/追加模式空间(缓冲区)到存放空间
g/G     粘贴 从存放空间取回/追加到模式空间
x       两个空间内容的交换
n/N     拷贝/追加下一行内容到当前
D       删除\n之前的内容
P       打印\n之前的内容
b       无条件跳转
t       满足匹配后的跳转
T       不满足匹配时跳转

3.常用命令


1)、显示文件第三行
sed -n '3p' file

2)、显示文件前三行
sed -n '1,3p' file

3)、显示文件除前三行之外的全部内容
sed -n '1,3!p' file

4)、显示文件第三行和之后的三行
sed -n '3,+3p' file

5)、在文件头插入“###”
sed '1i###' file

6)、在文件尾插入"@@@"
sed '$a@@@' file

7)、在文件的第二行后插入两行内容
sed '2a hello \
> how are your?' file

8)、把文件第三行替换成"$$$"
sed '3c$$$' file

9)、输出带行号内容
nl file | sed '2ahello'

10)、修改文件
sed -i 's/root/rm/' file

11)、把文件的第二行到第四行复制到文件的末尾
sed '2,4H;$G' file

12)、删除空行
sed '/^$/d' file

13)、删除配置文件中的注释行
sed -i '/^#/d'

14)、在每一行前添加#进行注释
sed "s/^/#/" file

15)、去除第二行的注释
sed -i "2s/^#//" file

16)、查找内容写入新的文件中
sed '/xfs/w newfile' file

17)、把第1行移动到第2行后面(相邻两行即是交换)
sed "1{h;d};4{G}" file

18)、在root两边加上括号
sed 's/root/(&)/' file

19)、使用#做分隔符
sed 's#/bin/bash#/sbin/nologin#'

20)、替换每一行的所有匹配项
sed 's/text/replace/g' file 

21)、把包含ok的行移动到包含world行的后面
sed -i -e '/ok/{h;d}' -e '/world/G' file