sed的可选参数
-n 只有经过sed特殊处理的那一行才会被列出来
-e 直接在指令列模式上进行sed的动作编辑
-f 直接将sed的动作下载一个文件内 -f可以执行filename内的sed动作
-i 直接修改读取的文件内容,而不是通过屏幕输出
a: 新增 a的后面可以接字符串
c:取代
d:删除
i:插入
p:打印
s:取代
sed的应用举例
wuze@wuze-virtual-machine:~/c++_project/01/001$ nl /etc/passwd | sed ‘2,5d’
1 root:x:0:0:root:/root:/bin/bash
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
# 删除2-5行的内容
wuze@wuze-virtual-machine:~/c++_project/01/001$ nl /etc/passwd | sed '3d'
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 只删除第三行
wuze@wuze-virtual-machine:~/c++_project/01/001$ nl /etc/passwd | sed '2a dd'
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
dd
# 在第二行后添加
sed配合grep的使用
wuze@wuze-virtual-machine:~/c++_project/01/001$ nl /etc/passwd | grep 'root:x' | sed 's/^.*root:x//g'
:0:0:root:/root:/bin/bash
通过 grep匹配root:x开头的行 然后将其替换成空 显示后边的数
sed ‘s/替换字符/替换成的字符/g'