2016-07-14 5 views
0

入力ファイル:私は2つの単語の置換のための上記のコマンドを試みたが、Stream Editorを使用して複数の単語を同時に置換する方法はありますか?

perl is an interpreterated language 

it has three data types 

scalar 

scalar 

hashes 

scalar is a single value 

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

が出力:multiple_sed.txt

perl is an interpreterated language 

it has three data types 

scalar 

array 

hashes 

scalar is a single value 

私は、以下のコマンドを試してみましたどのように私は単語の置換の数を変更することができます(すなわちmor 100単語以上)。

ストリームエディタ(sed)でどうすればいいですか?その置換テキストと単語のリストで

+1

たいあなたがここで達成しようとしていることについてあなたの質問を少し詳しく説明できたら助けになりますが、感謝しますか? –

答えて

1

wordsfile:

array scalar 
is was 
interpreterated interpreted 

あなたはprocess substitution使用することができます。-fに渡されたインナーsedコマンドで

$ 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 

を、 wordsfileのすべての行は、sed subsにフォーマットされています滴定コマンド。結果は、multiple_sed.txtの置換を処理する外部sedに送信されます。

編集:

内側のsedコマンドで別の区切り文字を使用して、potongによって示唆されるように読みやすく(また、ここでは役に立たないg修飾子を削除):

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

置換コマンドのLHSにメタキャラクタ '^'と '$'を使用しているので、 'g'フラグは必要ありません(1度しか出現できません)。おそらく別の区切り文字を使用すると、コマンドがより明確になるでしょうか? 'sed' s/^/s#/; s//#/; s/$ /#/ 'wordsfile' – potong

+0

@potongありがとうございます。私は更新しました。 – SLePort

関連する問題