LoginSignup
0

More than 3 years have passed since last update.

BSD版sedで粘る〜GNU sedとのコマンド比較〜

Last updated at Posted at 2020-12-08

この記事は、上智大学エレクトロニクス研究部Advent Calendar第9日目の記事です。

まえがき

シェルスクリプトを勉強すると最初の方に出てくる sed コマンドですが、実はMacの Command Line Tools へ同梱されている sed コマンドはBSDライセンスのもので、Linuxで広く使われているGNU版のものとは異なります。そのせいでネットでコピペした sed コマンドのワンライナーが動かないということが発生します。この記事ではBSD版の sed と GNU版の sed で同じことをしようとしたときにどのようにコマンドが異なるのかを比較します。

ちなみに

Homebrew を使えば簡単にGNU版 sed をインストールできます。

brew install gnu-sed

以下のように gsed と打ち込むとLinuxと同じように使えることがわかります。

echo hogehoge | gsed 's/hoge/fuga\n/g'
fuga
fuga


なので、以下は読む必要はありませんが、宗教的な理由でGNUコマンドを使いたくないという方、少しでも余計なツールを入れずに標準環境で頑張りたいという方の参考になればと思います。

BSD版 sed と GNU版 sed の対応表

コマンドの内容 GNU BSD
改行文字に置き換える sed 's/;/;\n/g' sed -e 's/;/;\'$'\n/g'
直接編集(バックアップを作らない) sed -i '1d' hoge.txt sed -i '' '1d' hoge.txt
直接編集(バックアップを作る) sed -i.backup '1d' hoge.txt sed -i '.backup' '1d' hoge.txt

参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0