sed的輸入

除了使用vi或者vim來編輯文本,還可以使用sed和awk指令編輯器批量處理 文本,本節學習sed編輯器。sed是
流編輯器
(stream editor),根據預先定好的規則處理文本。sed一次取出一行進行處理,并把結果輸出到标準輸出中。
1 用管道給sed輸入
用管道給sed輸入資料,舉例如下:
運作後結果為:
wu lin nei zhuan
這裡的
s
是
替換
(substitute)的意思。
2 sed指令從文本檔案取資料
建立testfile檔案,檔案内容如下:
wu lin wai zhuan is good.
da ran fang is good.
xi you ji hou zhuan is good.
然後用sed指令把所有的
good
改成
wonderful
,輸入:
sed 's/good/wonderful/' testfile
結果為:
wu lin wai zhuan is wonderful.
da ran fang is wonderful.
xi you ji hou zhuan is wonderful.
注意,s
ed指令并不會修改testfile内容,而是把結果輸出到标準輸出中
。
3 使用多個指令
在使用sed指令的時候,使用多個指令的時候要用
-e
選項。比如想把上面的testfile中的
is
改成
was
,把
good
改成
great
。
輸入:
sed -e 's/is/was/;s/good/great/' testfile
輸出結果為:
wu lin wai zhuan was great.
da ran fang was great.
xi you ji hou zhuan was great.
注意指令與指令之間使用
分号
隔開。
4 把指令放到檔案中
有時候可以把較多的指令放進一個檔案中,然後用sed指令去加載。比如建立一個檔案去存儲指令,建立檔案sedfile,内容如下:
s/is/was/
s/good/great/
然後在sed指令後面增加
-f
參數去加載這個檔案。
sed -f sedfile testfile
運作結果為:
wu lin wai zhuan was great.
da ran fang was great.
xi you ji hou zhuan was great.