0409 第十二次課:sed
sed命令
一、sed命令
-
sed簡介
sed命令主要用於刪除、查詢替換
-
sed的用法:
sed命令模式:sed [option] 'sed命令' filename sed指令碼模式:sed [option] 'sed script' filename
-
sed選項:
-n:只打印匹配到行
-e:直接在命令列進行編輯,此為預設的選項
-f: 執行指定指令碼中的script語句
-i:直接修改檔案中的內容
-
sed動作說明
a:a的後面可以是字串,這些字串會新增到下一行(目前的下一行)
c:取代,c的後面可以是字串,這些字串可以取代n1,n2之間的行
d:刪除
i:插入,i的後面可以是字串,這些字串會在新的一行出現(目前的上一行)
p:列印,通常p和 -n一起使用
s:替換,進行替換,通常s是搭配正則,例如:s/oo/tt/g(把oo替換為tt)
-
示例:
1、使用sed進行匹配
sed -n '/root/'p passwd
2、sed不區分大小寫匹配
sed -n '/root/'Ip passwd
3、刪除1-30(並不會操作檔案)
sed '1,30'd passwd |wc -l
4、把第1-5行替換為“111”
sed '1,5'c'111' passwd
5、指定行數替換
sed '1,10s/oo/xx/g' passwd
6、全域性替換
sed '$s/oo/xx/g' passwd
7、把passwd文字以:分割,把第一段和最後一段進行替換
以第一行為例:
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' passwd |head -n 1
解釋:
-r :使用擴充套件正則。可以不使用脫意符
/([^:]+):(.*):([^:]+)/ 以“:”分割為三段。
第一段([^:]+):,不以:開頭,以:結尾,“+”表示一個或多個字元。對應的輸出結果就是:
第二段(.): (.)貪婪匹配,以“:”結尾。對應的輸出結果是:
第三段([^:]+) 不以“:”開頭,“+”表示一個或多個字元。對應的輸出結果就是:
\1表示第一個()內容,\2表示第二個()內容,\3表示第三個內容
最終的輸出結果:
8、在某行插入字元
在第三行插入‘333’
sed ‘3’i‘333’