sed
.
では、例を挙げましょう。次のファイルがありますfile1.txt
。
A 1
B 2
C 3
2番目のファイルがありますfile2.txt
。
line 1
line 2
line 3
line 2
今の内容全体をに変更しようとしているので、file1.txt
最終的には次のようになります。
line 1
A 1
B 2
C 3
line 3
私が考えることができる1つの方法は次のとおりです。
sed -i "s/line 2/$(cat file1.txt)/g" file2.txt.
/
しかし、その後、moreなどの特殊文字も確認する必要があります。読むことができるすべての文字は で見つけることができると仮定する必要がありますfile1.txt
。
それでは私の質問に戻ります。ファイルの1行を2番目のファイルの内容全体に置き換える簡単な方法はありますか?必ずしもそうではありませんsed
。仕事をより良くするなら、別のツールになるかもしれません...
ベストアンサー1
sed -e '/^line 2$/{r file1.txt' -e 'd;}' file2.txt
スクリプトsed
は
/^line 2$/{
r file1.txt
d
}
ファイル名の後の改行は必須であるため、コマンドラインからfile1.txt
別の式に分割すると読みやすくなります。-e
sed '/^line 2$/{r file1.txt
d;}' file2.txt
スクリプトは内容のある行を探しますline 2
。これが見つかったらfile1.txt
すぐに内容を出力し、元の行を削除します。
を使用するとsed -i
インラインに変更されますfile2.txt
(推奨されません)。