ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

OS Xのsedコマンド

なんか動きが変だなあと思ったら、OS XsedGNU sedじゃないってオチでした。

$ sed -i s/enabled=1/enabled=0/g hoge.repo
sed: 1: "hoge.repo": invalid command code .
$ sed -i s/enabled=1/enabled=0/g ~/Downloads/hoge.repo
sed: 1: "/Users/ytooyama/Downloa ...": transform strings are not the same length

参考サイト: qiita.com shunirr.hatenablog.jp

なので、参考サイトにあるように、Macsedとお友達にならずにHomebrewでgnu-sedを入れてお茶を濁すことにしました。

おでは-iオプションが使いたかっただけなんじゃあー。

$ brew update
$ brew install gnu-sed

ただ、これだけだとパスが通っていないので、こちらのページを参考に、.bash_profileにパスを書いてパスを通しました。

$ vi ~/.bash_profile
...
export MANPATH="/usr/local/opt/gnu-sed/libexec/gnuman:$MANPATH"
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

sourceコマンドでパスを反映させます。

$ source ~/.bash_profile

私のMacGNU sedがやってきました。これで安心してMacsedおじさんになることができます。

ちなみにパスを通すのが面倒くさければgsedコマンドを打つのでも対応可能みたいです(gsedはGNU sedエイリアスらしい)。ただパスを通さないで忘れてsedコマンドを打ってしまうと残念な結果になりますけど。

$ sed --version
sed (GNU sed) 4.2.2
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field