1. ホーム
  2. linux

[解決済み】Mac(BSD)とLinuxの両方で動作するsedのin-placeフラグ

2022-04-01 09:24:28

質問

の呼び出しはありますか? sed LinuxとMacの両方で動作する、バックアップなしのインプレース編集を行うには?BSDの sed OS Xに同梱されている sed -i '' … は、GNUの sed Linuxディストリビューションは通常、引用符を空の入力ファイル名として解釈し(バックアップ拡張子の代わりに)、必要なのは sed -i … の代わりに

両方のシステムで同じスクリプトを使用できるように、両方のフレーバーで動作するコマンドライン構文はありますか?

解決方法は?

もし、本当に 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 ファイルを作成します。