Mac (BSD) と Linux の両方で機能する sed インプレースフラグ [closed] 質問する

Mac (BSD) と Linux の両方で機能する sed インプレースフラグ [closed] 質問する

sedLinux と Mac の両方で機能する、バックアップなしの todo インプレース編集の呼び出しはありますか? sedOS X に同梱されている BSD では が必要なようですがsed -i '' …、GNU sedLinux ディストリビューションには通常 が付属しており、引用符を空の入力ファイル名 (バックアップ拡張子ではなく) として解釈するため、代わりに が必要です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ファイルを削除するだけで済みます。

おすすめ記事