歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux的sed命令

Linux的sed命令

日期:2017/2/28 15:53:00   编辑:Linux教程

你可以用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次出現)。

現在看一個保護刪除行的例子。startend的值既可以是行號也可以是用以匹配的模式。從startend的所有行都從輸出中移除。這個例子會刪除從第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的更多信息。

Copyright © Linux教程網 All Rights Reserved