歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux sed 高級用法實例

Linux sed 高級用法實例

日期:2017/2/28 13:48:08   编辑:Linux教程

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"(蜂鳴或者閃爍)

\0xx 轉換為八進制的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 '25a\I 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,刪除某一行內容
刪除以[email protected]開頭的行:

sed -i "/^[email protected]/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

Copyright © Linux教程網 All Rights Reserved