リストを使用してファイル内で検索/置換する最も簡単な方法は何ですか?

リストを使用してファイル内で検索/置換する最も簡単な方法は何ですか?

foo.txt ファイルとそのファイルで探したい正規表現があります。正規表現が見つかるたびに、別のファイルbar.txtから1行を取り、foo.txtで見つかった正規表現の一致に置き換えたいと思います。デフォルトでは検索/置換が必要ですが、置き換えるたびにbar.txtの次の行に次の代替テキストが表示されます。

これを実行できる単純なシェル魔法はありますか?

ベストアンサー1

私が正しく理解すれば、おそらく次のようになります。

awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file

または、regexp各行が複数回発生するか、まったく発生しない場合:

perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file

おすすめ記事