linux基础,正则,sed

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

sed

sed打印指定行

sed '10'p -n xx.txt sed '1,4'p -n xx.txt sed '5,$'p -n xx.txt

linux基础,正则,sed_第1张图片

sed '$'p -n xx.txt $表示最后一行。

打印包含某个字符串的行-n

sed '/root/'p xx.txt可以使用^.*$等特殊符号

匹配的会连续显示2次,特性符合有些要脱义,

如果想脱义可以使用-r参数,

linux基础,正则,sed_第2张图片

linux基础,正则,sed_第3张图片

-e可以实现同时进行多个任务sed -e '/root/'p -e '/body/'p -n xx.txt

linux基础,正则,sed_第4张图片

可以加-I (大写的i) 参数匹配大写小字母

linux基础,正则,sed_第5张图片

sed 还可以删除行

sed '/root/d' xx.txt     
sed '1d'  xx.txt
sed '1,10d' xx.txt
sed '1,$d'  xx.txt

以上命令只是以删除后的行显示出来,真实文件不影响

如果要真正的删除可以加参数-i

linux基础,正则,sed_第6张图片

linux基础,正则,sed_第7张图片

sed的替换

替换sed '1,2s/ot/to/g' xx.txt 其中s就是替换的意思,

g为全局替换,否则只替换一次的,/也可以为#,@等(把第1行到第2行的ot替换成to)

linux基础,正则,sed_第8张图片

sed同样适用特殊符号

sed -r '1,10s/ro+/r/g' passwd

linux基础,正则,sed_第9张图片

以冒号为分隔符将前十行第一个字段与最后一个字段对调

head passwd | sed -r 's/([^:]+):(.*):([^:+])/\3:\2::1'

linux基础,正则,sed_第10张图片

验证时,\3\2\1忘记加冒号,所有替换后,第一个字段和第二个字段连着了。

删除显示文件所有英文字母(换中方式就是把字母替换成空)

linux基础,正则,sed_第11张图片

在所有行前面加上固定的字符串

head passwd | sed -r 's/(.)/aaa:&/' //& 表示前面的(.)

linux基础,正则,sed_第12张图片

转载于:https://my.oschina.net/u/3363383/blog/1575972

你可能感兴趣的:(linux基础,正则,sed)