sedはファイルに書き込むか、サンプル出力を出すか

sedはファイルに書き込むか、サンプル出力を出すか

sedこのようなファイルを使用する場合

sed 's/a/o' fruits

端末に必要な出力は表示されますが、ファイルの内容は変更されません。上記の置換でファイルを永続的に変更するにはどうすればよいですか?

答え1

パラメータを使用して-iファイルを永続的に変更します。

答え2

一般的に、そうすべきではありません。GNU coreutils と他のバージョンでは、-iインプレース編集のオプションが追加されていますが、実装がさまざまで移植性がありません。ファイルはストリームではないので、 での編集はsed避けてください。-iのオプションはsed、基本的にファイルを削除して再作成するため、シンボリックリンクも破壊します。より合理的な代替手段としてed、 または を使用してくださいex

ex -s file << EOF
s/a/o/
w
EOF

答え3

sed のマニュアルページから:

-i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if extension supplied)

関連情報