你可以用sed命令像文本處理器的尋找替換功能一樣,用一個字串替換檔案中的某個字串。sed命令還可以從檔案中刪除連續的行。因為sed是一個流編輯器,它把給定的檔案作為輸入,將輸出列印到螢幕,除非將輸出重新導向到一個檔案。換句話說,sed不改變輸入檔案。
sed命令的一個形式如下:
替換:sed 's///g'
刪除:sed ',d'
我們先看下替換的例子。如果想把檔案poem.txt中出現的所有lamb替換成ham,命令如下:
cat poem.txt
Mary had a little lamb
Mary fried a lot of spam
Jack ate a Spam sandwich
Jill had a lamb spamwich
sed 's/lamb/ham/g' poem.txt
Mary had a little ham
Mary fried a lot of spam
Jack ate a Spam sandwich
Jill had a ham spamwich
在單引號引起來的字串中,"s"表示替換(substitute),"g"表示全域(global)替換。也可以去掉"g"(只替換每行第一次出現的字串)或者指定一個數字(替換每行的前n次出現)。
現在看一個保護刪除行的例子。start和end的值既可以是行號也可以是用以匹配的模式。從start到end的所有行都從輸出中移除。這個例子會刪除從第2行開始,到並包含第3行的內容:
sed '2,3d' poem.txt
Mary had a little lamb
Jill had a lamb spamwich
這個例子會刪除從第1行開始,到包含Jack的哪一行的內容:
sed '1,/Jack/d' poem.txt
Jill had a lamb spamwich
sed命令的最常見用法是將一個文本字串換成另一個文本字串。事實上,sed用來尋找和刪除的字串是Regex。這意味可以像grep那樣使用模式比對。雖然可能從來不會這麼用,這裡還是給出一個例子。將任何在行尾出現的lamb換成ham,並將結果存放在一個新檔案中:
sed 's/lamb$/ham/g' poem.txt > new.file
因為將輸出重新導向到了一個檔案,sed沒有在螢幕上列印任何東西。查看新檔案new.file,得到下面幾行:
cat new.file
Mary had a little ham
Mary fried a lot of spam
Jack ate a Spam sandwich
Jill had a lamb spamwich
使用man sed命令來擷取sed的更多資訊。
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文連結:http://www.linuxidc.com/Linux/2012-04/58860.htm