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行之後插入新一行內容時,寫法
sed -i '325a要添加的新一行內容' 文件
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.1
sed -i "/^$var/cchanged" aaa.txt
7,刪除某一行內容
刪除以10000@qq.com開頭的行:
sed -i "/^10000@qq.com/d" aaa.txt
php