
ファイルの特定の行の下に情報を含むファイルを追加する方法を知りたいです。
file1.txt
たとえば、次の行があります。
line 1
line 2
line 3
そして、特定の場所にfile2.txt
追加したい情報があります。file1.txt
line 2
これについて何をすべきですか?
答え1
SedのR[ead]コマンドの使用
あなたはsedを使用することができますrコマンドファイルをお読みください。たとえば、行番号に基づいて行を一致させるには、次のようにします。
sed '2 r /tmp/file2.txt' /tmp/file1.txt
またはコンテンツごとに行を一致させたい場合:
sed '/^line 2/ r /tmp/file2.txt' /tmp/file1.txt
これはGNU拡張に依存しない標準コマンドなので、さまざまなsed実装で動作する必要があります。
上記のコマンドは、標準出力に結果を出力します。ソースファイルを変更するには、-i
sedの後にこのオプションを追加します(このオプションはLinuxおよびCygwinでは機能しますが、すべてのUNIXシステムでは機能しません)。
答え2
また、次の方法sed
でこれを実行できますawk
。
awk '1; /line 2/ { while(getline < "file2.txt") print }' file1.txt
file2.txt
これにより、すべてのline 2
出会いが挿入されます。
これが1
基本ブロックです{ print $0 }
。
これにより、出力が標準出力に送信されます。上書きするには、file1.txt
出力を一時ファイルに保存して上書きします。
awk '1; /line 2/ { while(getline < "file2.txt") print }' file1.txt > file1.txt.tmp
mv file1.txt.tmp file1.txt
編集する
固定文字列の一致を==
より安定的に実行するには(たとえば、上記の文字列の一致)、次の条件を使用します。
awk '1; $0 == "\"zend_extension=/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so\"" { while(getline < "file2.txt") print }' file1.txt
これを行うには、行全体が一致する必要があります。