grep工具的功能其實還不夠強大,grep實作的隻是查找功能,而它卻不能實作把查找的内容替換掉。以前用vim的時候,可以查找也可以替換,但是隻局限于在文本内部來操作,而不能輸出到螢幕上。sed工具以及下面要講的awk工具就能實作把替換的文本輸出到螢幕上的功能了,而且還有其他更豐富的功能。sed和awk都是流式編輯器,是針對文檔的行來操作的。
<code>sed -n '/root/'p 1.txt</code> 比對含有root的行,同時也支援. + ? | {} []
<code>sed -n 'n'p 1.txt</code> 列印第n行
<code>sed -e '1'p -e '/bus/'p -n 1.txt</code> -e表示一條指令内不止有一個動作,列印出第一行的同時,在比對bus字元
<code>sed</code> -n '/bus/'Ip passwd<code>` 比對到大小寫的bus I不區分大小寫<br/></code>sed -i '1,10'd passwd <code>-i會直接修改檔案,是以建議在用的時候先儲存檔案,删除1-10行,<br/></code>sed -i '/user2/'d passwd ` 删除user2比對到的行
<code>sed '1,10s/root/toor/g passwd</code> 将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/'
本文轉自 小新銳 51CTO部落格,原文連結:http://blog.51cto.com/13407306/2044084,如需轉載請自行聯系原作者