![sed [duplicate]を使用してあるファイルを別のファイルに追加する](https://linux33.com/image/132240/sed%20%5Bduplicate%5D%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%82%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%88%A5%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B.png)
file.bak
次のコマンドを使用して追加しようとしましたfile.php
。
sed r file.php file.bak
必要に応じて正しい出力を提供します。ただし、file.bak
に追加して保存しませんfile.php
。
どうすればいいのかご存知ですか?
答え1
これは必要ありませんsed
。以下を使用すれば十分ですcat
。
cat file.bak >>file.php
これで内容がfile.bak
最後に追加されますfile.php
。
プログラムは内容を標準出力に出力しますsed
。r file.php
file.php
各入力ラインについて。file.bak
複数の行がある場合は、複数のfile.php
挿入コピーが作成されます。
sed
データを追加するために使用したい場合は、これは望むものではありません。
代わりに、cat
ここがより良いという事実を無視してください、
sed '$r file.bak' file.php
file.bak
最後の行に達するまで読み込まれませんfile.php
。これは両方のファイルの内容を連結する効果があります(最初の内容file.php
、次の内容file.bak
)。
結果を書き換えるには、file.php
出力を新しいファイルにリダイレクトしてから、安全な方法でその場所に移動できます。
sed '$r file.bak' file.php >tmpfile && mv tmpfile file.php
-i
または、一部の実装sed
にあるオプションを(安全でない方法で)使用することもできます。
sed -i '$r file.bak' file.php