記事一覧:2009年06月04日

BSD版sedとGNU版sed

 BSD版のUNIX toolsと、GNU版のUNIX toolsでは微妙に受け付けるコマンドラインオプションが違うのは有名な話。たとえばGNU版の「cp -a」はBSD版では「cp -pr」に相当する。

 で、Mac OS XのコマンドラインツールはBSD版なのだが、「sed -e “s/ /\n/g”」が効かなくて困った。Mac OS X付属のsedは置換後の文字の指定にエスケープシーケンスが使えないらしい。

 これの簡単な解決はこちら。

perl -pe "s/ /\n/g"

 「perl -p」でsedっぽい動作をさせられる、という話でした。よくこんなの覚えてたな>自分。ラクダ本の最初のほうとかに書いてあったんだっけ? ラクダ本を読んだのは多分10年くらい前だと思うんだけど、IT業界の進化は早いとか言われていて3年前の知識はもう古いとか言われているけど意外に昔覚えたことってふと全然違うことで役立つことがあるから侮れないね。