您的位置:首页 > 运维架构 > Linux

Linux笔记(27)sed

2017-11-24 23:27 387 查看
grep工具的功能其实还不够强大,grep实现的只是查找功能,而它却不能实现把查找的内容替换掉。以前用vim的时候,可以查找也可以替换,但是只局限于在文本内部来操作,而不能输出到屏幕上。sed工具以及下面要讲的awk工具就能实现把替换的文本输出到屏幕上的功能了,而且还有其他更丰富的功能。sed和awk都是流式编辑器,是针对文档的行来操作的。

sed  -n '/root/'p 1.txt
匹配含有root的行,同时也支持. + ? | {} []
sed  -n 'n'p 1.txt
打印第n行
sed  -e '1'p -e '/bus/'p -n 1.txt
-e表示一条命令内不止有一个动作,打印出第一行的同时,在匹配bus字符

sed
-n '/bus/'Ip passwd
`   匹配到大小写的bus   I不区分大小写<br/>
sed -i '1,10'd passwd
-i会直接修改文件,所以建议在用的时候先保存文件,删除1-10行,<br/>
sed -i '/user2/'d passwd ` 删除user2匹配到的行

sed '1,10s/root/toor/g passwd
将1-10行的root替换成toor,g全局替换,不加的话只替换每一行第一个

需求:第一段和最后一段替换位置
head passwd |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:1/'
第一段:中间段:最后一段
head passwd |sed 's/\/root/123/g' 加s调换两个字符或字符串的位置将root换成123
head passwd |sed 's/\/sbin/nologin/123/g' 将sbin/nologin 换成123

head passwd |sed 's/[a-zA-Z]//g' 将所有的英文字符删除,也就是替换为空

head passwd |sed -r 's/(.)/aaa:&/' 在所有的第一列前面加上aaa,&表示前面的(),
也可以写成
[root@localhost sed]# head passwd |sed -r 's/(.)/aaa:\1/'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  27