Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

posted at

updated at

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

この記事は、上智大学エレクトロニクス研究部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

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?