你可以用sed命令像文本處理器的查找替換功能一樣,用一個字符串替換文件中的某個字符串。sed命令還可以從文件中刪除連續的行。因為sed是一個流編輯器,它把給定的文件作為輸入,將輸出打印到屏幕,除非將輸出重定向到一個文件。換句話說,sed不改變輸入文件。
sed命令的一個形式如下:
替換:sed 's/
刪除:sed '
我們先看下替換的例子。如果想把文件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用來查找和刪除的字符串是正則表達式。這意味可以像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的更多信息。