二十七sed
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十七sed相关的知识,希望对你有一定的参考价值。
二十七、sedsed:流式编辑器,针对文档的行来操作。
格式:# 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的主要内容,如果未能解决你的问题,请参考以下文章