2016-07-14 21 views
0

inputfile中:multiple_sed.txt如何用流編輯器同時替換單詞的數量?

perl is an interpreterated language 

it has three data types 

scalar 

array 

hashes 

scalar is a single value 

我嘗試了下面的命令:

sed -e 's/array/scalar/g;s/was/is/g' multiple_sed.txt 

輸出:

perl is an interpreterated language 

it has three data types 

scalar 

scalar 

hashes 

scalar is a single value 

我試圖爲兩個詞替代上述命令,但我怎樣才能改變單詞替換的數量(即mor超過100個字)。

如何使用流編輯器(sed)執行此操作?

+1

想如果你能夠詳細闡述你的問題,你可以幫助但是會感激你想要在這裏實現什麼? –

回答

1

與他們的替代文字的單詞列表:

wordsfile:

array scalar 
is was 
interpreterated interpreted 

您可以使用process substitution

$ sed -f <(sed 's/^/s\//g;s/ /\//;s/$/\//g' wordsfile) multiple_sed.txt 
perl was an interpreted language 

it has three data types 

scalar 

scalar 

hashes 

scalar was a single value 

與內sed命令傳遞給-fwordsfile中的所有行均格式化爲sed子文件titution命令。結果發送給處理multiple_sed.txt中的替換的外部sed。

編輯:

如所建議的通過波東,在內sed命令使用不同的定界符使其更可讀的(也除去g改性劑是無用這裏):

sed -f <(sed 's/^/s#/;s/ /#/;s/$/#/' wordsfile) multiple_sed.txt 
+0

由於在替換命令的LHS中使用元字符'^'和'$',因此不需要'g'標誌(它只能出現一次)。也許使用不同的分隔符也可能使命令更清晰?即'sed's/^/s#/; s//#/; s/$ /#/'wordsfile' – potong

+0

Thanks @potong。我更新了。 – SLePort