BSD sed

Macの標準のsedはBSDのsedでGNUのsedとはオプションが異なる。
例えば-iオプションでファイルを編集する場合、BSDのsedでは-iオプションに引数が必要となる。

LinuxとMacで共通のスクリプトを書きたい場合にオプションの違いが邪魔になるのでできるだけ共通のコマンドを使いたい。

gnu-sed

HomebrewでインストールできるGNUのsedを使うとBSDのsedと同じオプションで使える。

$ brew install gnu-sed

コマンドはgsedとしてインストールされるので、sedの代わりにgsedを使う。
gsedを使えばBSDのsedと同じオプションで使える。
例えば-iオプションでファイルを編集する場合は以下のように引数無しで使える。

$ gsed -i 's/old/new/g' file.txt

alias

BSDのsedが必要無い場合は.bashrc.zshrcsedgsedにaliasしておくと便利。

alias sed='gsed'