ネットでみかける通り sedコマンド使ってもエラーになることや、思い通りにならないことがあってストレスを感じてしまうことがる。
そもそもGNU sed
とBSD sed
が存在している。Macに入っているのはBSD sed
である。
参考:
GNUのsedとBSDのsed - さよならインターネット
TL;DR
BSD sedがイケてないのではなく、
GNU sedが独自で拡張正規表現を実装していただけっぽい。
特に -i
の挙動の違い
* bash - Sed command find and replace in file and overwrite file doesn't work, it empties the file - Stack Overflow
* linux - Delete whitespace in each begin of line of file, using bash - Stack Overflow
確かに タイトルにlinuxとあるものは、そこで GNU sed
であることが暗に示されているということだろうか(これに気づかないとハマる)。
正規表現の扱いの違い
* GNU/BSDでのsedにおける正規表現の扱いの違い
などに注意が必要である。
White spaceも
Macでは [[:space:]]
であり、 \s
not workである。