首頁 > 軟體

Linux sed 高階用法範例

2020-06-16 17:30:19

Linux 中,sed 可以實現替換或者插入等功能,用法簡單歸納一下。

1,要替換一些文字時,用”/”把各部分隔開;

sed -i 's/原內容/新內容/g' 檔案

注意:原內容可以是一整行,也可以是一行中的某一段。

2,要替換時,如果“原內容”或“新內容”中含有特殊字元(比如”/”或者”#”等),可以使用其它符號把各部分隔開,比如以下幾種格式都是正確的

sed -i 's,原內容,新內容,g' 檔案
sed -i 's#原內容#新內容#g' 檔案
sed -i 's:原內容:新內容:g' 檔案
sed -i 's~原內容~新內容~g' 檔案

3,要插入新一行內容時,寫法:

sed -i '/原行內容/a要新增的新一行內容' 檔案

注意:a表示append,後面不需要新增符號。如果“原行內容”沒有輸入完整,比如只輸入了開頭一部分,那麼新的內容仍將插入下一行。

第325行以後插入新一行內容時,寫法

<CODE>sed -i '325a要新增的新一行內容' 檔案</CODE>

4,某些跳脫符可能有特殊含義,如t表示一個縮排。以下這些跳脫,適用於sed和echo

n  表示新的一行

r  表示回車

t  表示水平製表符

v  表示垂直製表符

b  表示後退符

a  表示"alert"(蜂鳴或者閃爍)

xx 轉換為八進位制的ASCII碼

=========================================  
以下是一些例子

1,普通替換寫法  
把 I love cake 替換成 You love apple,寫法:

sed -i 's/I love cake/You love apple/g' aaa.txt

2,普通替換寫法(含特殊字元的處理)  
如果替換的文字中含有特殊字元,比如把 /usr/local/php.ini 替換成 /etc/php.ini,寫法:

sed -i 's//usr/local/php.ini//etc/php.ini/g' aaa.txt  #加上""作為跳脫符,不推薦sed -i 's,/usr/local/php.ini,/etc/php.ini,g' aaa.txt   #使用其它符號隔開,推薦!sed -i 's#/usr/local/php.ini#/etc/php.ini#g' aaa.txt   #使用其它符號隔開,推薦!

3,在特定行號後插入一行  
要在第25行以後插入一行新的內容I love apple(插入內容將變成第26行),寫法:

sed -i '25aI love apple' aaa.txt

sed -i '25aI love apple' aaa.txt    #沒有特殊字元時,加與不加跳脫符,效果都一樣

要在第25行插入一行新的內容 /usr/local/php.ini,寫法:

sed -i '25a/usr/local/php.ini' aaa.txt      #需要加入跳脫符

4,在特定內容後插入一行  
假設某一行的內容為 I love apple(不知道行號),要在這一行後面新增一行Do you love it,寫法:

# sed -i '/I love apple/aDo you love it' aaa.txt

5,替換某一行內容  
要把第3行的內容徹底替換為zhukun.net pptpd passwd *,寫法:

sed -i "3s/.*/zhukun.net pptpd passwd */" aaa.txt

6,替換某一行內容  
把以127.0.0.1開頭的行,替換為changed,這裡我們換一種使用變數的寫法:

var=127.0.0.1sed -i "/^$var/cchanged" aaa.txt

7,刪除某一行內容  
刪除以10000@qq.com開頭的行:

sed -i "/^10000@qq.com/d" aaa.txt

find . -name build.xml | xargs rm

在sed命令中引入shell變數 http://www.linuxidc.com/Linux/2014-03/97896.htm

Linux下Shell程式設計——sed命令基本用法 http://www.linuxidc.com/Linux/2013-06/85526.htm

Unix文字處理工具之sed  http://www.linuxidc.com/Linux/2013-08/89315.htm

sed 高階用法 http://www.linuxidc.com/Linux/2014-09/106961.htm

sed命令詳解與範例 http://www.linuxidc.com/Linux/2014-11/109325.htm

Linux正規表示式sed 詳述  http://www.linuxidc.com/Linux/2015-04/116309.htm

Linux文字處理工具之sed  http://www.linuxidc.com/Linux/2015-01/111436.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136018.htm


IT145.com E-mail:sddin#qq.com