sed
Linux と Mac の両方で機能する、バックアップなしの todo インプレース編集の呼び出しはありますか? sed
OS X に同梱されている BSD では が必要なようですがsed -i '' …
、GNU sed
Linux ディストリビューションには通常 が付属しており、引用符を空の入力ファイル名 (バックアップ拡張子ではなく) として解釈するため、代わりに が必要ですsed -i …
。
両方のシステムで同じスクリプトを使用できるように、両方のフレーバーで機能するコマンドライン構文はありますか?
ベストアンサー1
本当にsed -i
「簡単な方法」を使いたいのであれば、次の方法は GNU と BSD/Mac の両方で動作しますsed
:
sed -i.bak 's/foo/bar/' filename
スペースとドットの不足に注意してください。
証拠:
# GNU sed
% sed --version | head -1
GNU sed version 4.2.1
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file file.bak
% cat ./file
bar
# BSD sed
% sed --version 2>&1 | head -1
sed: illegal option -- -
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file file.bak
% cat ./file
bar
当然、その場合は.bak
ファイルを削除するだけで済みます。