sedを使用してパターンを含む行を他のファイルの内容に置き換えることはできますか?

sedを使用してパターンを含む行を他のファイルの内容に置き換えることはできますか?

ファイル.txt 入力:

one fffds
two xxxx
three ffff
four ffde

データファイル.txt:

six
seven

two xxxx含まれている行を変更したいです。ファイル.txt 入力内容があるデータファイル.txt。出力ファイルは次のようにする必要があります。

出力ファイル.txt:

one fffds
six
seven
three ffff
four ffde

ベストアンサー1

これは私にとって効果的です。

sed -n '
  /two xxxx/{
    rdata_file.txt
    d
  }
  p'

行が式と一致する場合は、ファイルの内容を印刷して次のループを開始します。それ以外の場合は、2番目のコマンドが呼び出され、その行が印刷されます。

Perlで同様のタスクを実行するためのより読みやすい解決策:

perl -pe '/two xxxx/ and $_=`cat data_file.txt`'

おすすめ記事