对文档非交互式增删改查, 逐行处理文档。
用法:
1, 前置指令 | sed 选项 条件 指令
2, sed 选项 条件 指令 被处理文档
选项: -n 屏蔽默认输出 -r 支持扩展正则 -i 修改源文件
指令: p 输出 d 删除 s 替换

直接上例子:
sed -n 'p' user //输出所有行
sed -n '1p' user //输出第1行
sed -n '2p' user //输出第2行
sed -n '3p' user //输出第3行
sed -n '2,4p' user //输出2~4行
sed -n '2p;4p' user //输出第2行与第4行

sed -n '2,+1p' user //输出第2行以及后面1行
sed -n '/^root/p' user //输出以root开头的行
sed -n '/root/p' user //输出包含root的行
sed -nr '/^root|^bin/p' user //输出以root开头的行或bin开头的行
sed -n '1!p' user //输出除了第1行的内容
sed -n '$p' user //输出最后一行
sed -n '$=' user //输出最后一行的行号

sed 's/2017/6666/' test.txt //把所有行的第1个2017替换成6666
sed 's/2017/6666/2' test.txt //把所有行的第2个2017替换成6666
sed '1s/2017/6666/' test.txt //把第1行的第1个2017替换成6666
sed '3s/2017/6666/3' test.txt //把第3行的第3个2017替换成6666
sed '3s/2017//3' test.txt //把第3行的第3个2017替换成空,相当于删除
sed '/2024/s/2017/6666/' test.txt //找到有2024的行,将2017替换成6666
sed 's/2017/6666/g' test.txt //替换所有行的所有2017为6666

/bin/bash 改成 /sbin/sh
sed 's//bin/bash//sbin/sh/' user //直接替换,报错
sed 's/\/bin\/bash/\/sbin\/sh/' user //使用转义符号可以成功,但不方便
sed 's!/bin/bash!/sbin/sh!' user //最佳方案,更改s的替换符,注意更换替换符并不需要事先声明,直接使用特殊字符即可!
sed 's(/bin/bash(/sbin/sh(' user //替换符号可以用所有数字键上的

 

如何将/etc/passwd以bash结尾的用户名输出?

[root@Python ~]# sed -n '/bash$/s/:.*//p' /etc/passwd
root
yzs
bob
tom
zhangsan
lisi
mike