二十七sed

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十七sed相关的知识,希望对你有一定的参考价值。

二十七、sed

sed:流式编辑器,针对文档的行来操作。

格式:# sed -n 'n' p filename。单引号内的n是一个数字,表示第几行。

打印某行,也支持r.t,r*t,r+t这三个用法。+需要脱义,示例:

p:打印

-n:只显示我们要打印的行,无关的内容不显示。

# sed -n '/r\+t/'p passwd

不用脱义符号就用-r选项,# sed -nr '/o+t/'p passwd

# sed -nr '/o{2}/'p passwd 匹配两次o

# sed -nr '/root|bus/'p passwd  或者:|

# sed -n '2'p passwd      

bin:x:1:1:bin:/bin:/sbin/NOlogin  不加-n则会全部显示出来。

# sed -n '1,$'p passwd  把第1行及后面所有行打印出来

# sed -n '1,3'p passwd  指定一个区间打印

打印包含某个字符串的行,示例:

-e:进行多个操作

# sed -n '/root/'p passwd  

加上-e可以实现多个行为,示例:

# sed -e '1'p -e '/11/'p -n passwd

不区分大小写,加上-I选项:

# sed -n '/bus/'Ip passwd

删除行(这仅仅是删除其他行显示剩下的行,并不会删除文件内容)

d:删除

-i:会真正删除文件的内容。

# sed  '1'd passwd  删除第1行

# sed  '1,3'd passwd  删除一个区间的行。d:删除。也可删除匹配某个字符的行,也可删除从某一行开始到文档最后一行的所有行。

删除字符的行:# sed '/bus/'d passwd

从某行开始至文档末的所有行:# sed '/25,$/'d passwd

替换字符或字符串

# sed '1,2s/ot/to/g' passwd    1至2行,ot替换为to,若不指定范围,就代表全部,直接s。

s:替换。

g:全局替换,不加g则只替换本行出现的第一个。用法类似vim。

可使用/作为分隔符外,还可用#和@。

调换两个字符串的位置(小括号在sed中属于特殊符号,必须在前面加转义符号\,替换时则写成\1\2或\3的形式。)

# sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' passwd   若不用转义符号,就加-r选项

# sed -r 's/(rot)(.*)(bash)/\3\2\1/' passwd

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

此处321代表前面内容替换后的位置,先第三段,再第二第一段。

修改文件内容

# head passwd |sed -r 's/(.*)/aaa:&/' 在每行的最前面加上aaa,&代表前面的小括号。

# sed -i 's/ot/to/g' passwd    将文件内的ot替换为to。


以上是关于二十七sed的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记第二十七节课

二十七 集合!!!!!!!!set 二十八 文件

leetcode刷题二十七

javaSE第二十七天

2022/01/23thinkphp源码无差别阅读(二十七)

React学习案例二十七