9.4/9.5 sed
sed的强项在于查找替换-n选项,和p一起使用,只打印出匹配的行
sed中也是支持+的,不过要使用\来脱义,或者加上-r选项(类似于grep -E)
打印指定的行
#sed -n '2'p passwd //打印出第二行的内容
# sed -n '2,5'p passwd //打印2到5行的内容
#sed -n '25,$'p passwd //打印25行到末尾的内容
# sed -n '1,$'p passwd //打印全部的内容,图略
在同一个sed表达式中多次匹配 -e
# sed -n -e '/mail/'p -e '/spool/'p passwd
//对每一行依次进行mail和spool匹配,每次匹配到就打印一次,所以下面两个共有的行就打印了2次
//-e可以有多个
匹配的时候不区分大小写,-I
# sed -n '/bus/'Ip test1
过滤掉指定的行
# sed '1,25'd test1 //过滤掉1到25的内容,也就是显示第25行之后的,并没有删除文件内容,原文件还是33行
-i 删除掉指定的行(会修改文件内容)
# sed -i '1,25'd test1 //删除1到25行的内容
# sed -i '/test1/'d test1 //删除掉含有test1的行
查找替换
sed '1,5s/root/toor/g' test1 //把1到5行中的root替换为toor
# tail test1 |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
把文件中的首段和末段颠倒位置
对于查找替换的内容里有/字符的,要用\,@或#来脱义
把文档里的所有英文字母删除掉
# tail test1 |sed 's/[a-zA-Z]//'
在所有的行前面添加固定字符串
# tail test1 |sed -r 's/(.*)/ccc:&/' //&表示小括号里的内容