MacOS の BSD sed は慣れないので Windows GitBash と同じ GNU sed に変える
BSD UNIX 系の MacOS に搭載されている sed
と、Linux や Windows GitBash に搭載されている sed
は、オプションの働きが異なる部分が多い。コレが厄介で、sed
を利用したスクリプトが Mac と Windows とで同じように動作してくれないのだ。
Windows GitBash を使う機会は多いし、UNIX より Linux の方が当然使うので、MacOS には申し訳ないが、BSD sed ではなく GNU sed で動いてもらうことにする。
GNU sed は Homebrew よりインストールできる。
$ brew install gnu-sed
インストールすると、gsed
というコマンドで利用できるようになる。
あとはコレを ~/.bashrc
あたりで alias
として登録し、sed
コマンドを叩いた時に実際は gsed
を使うようにしておく。
# ~/.bash_profile か ~/.bashrc あたりで設定する
alias sed='gsed'
もし MacOS の BSD sed を使いたくなったら、以下のように \
を先頭に付与して叩くと、alias
の指定を回避できる。
# エイリアスを回避して BSD sed を利用する
$ \sed -i "" 's/original/new/g' example.txt
コレで MacOS でも Windows GitBash と同じ GNU sed が動くようになった。環境の差異を気にしなくて良くなったので楽チン。
- 参考 : gnu-sedのインストール
- 参考 : GNUのsedとBSDのsed · さよならインターネット
- 参考 : GNU/BSDでのsedにおける正規表現の扱いの違い
- 参考 : BSD sed のメモ
- 参考 : Linux(GNU)とMac(BSD)のsedの振る舞いの違いを解決