sed

仕事で、ある設定ファイルの特定行に、設定値を挿入していくプログラムを設計している。
単純なテキストの行操作にはsedが良いという情報は知っていた。
しかし実際に利用したことはなかった。

今回業務で必要な処理は、sedで十分なはず。そう思い調査を開始。
大方のことはmanを見ればわかる。
http://www.linux.or.jp/JM/html/GNU_sed/man1/sed.1.html

開発環境は、windowscygwinを走らせているので、そこでsedの練習。

sed -e '/aaa/ i\  bbbbbbbbbbb' hoge.txt

hoge.txtの中から、aaaのある行を見つけ、その行の上にbbbbbbbbbbbを挿入するという命令。
うん。あっさりうまくいく。
なんてすばらしいんだ。あとはリダイレクトしてhoge.txtを上書きさせれば良い。

ところがだ。
linux環境で同じ命令を実行すると、sed: -e expression #1, char xx: Extra characters after commandてなエラーが表示される。

うーんうーん悩み、はたとsedのバージョンを確認する。
cygwinsedは4.09。
linuxsedは3.02。

linux環境は社の開発環境のスタンダード仕様で、とても古い設定になっている。

どうやらバージョンの違いにより挙動が変わっているようだ。
今はここまでしかわからん。

続きは以下の3.02用マニュアルを読んで解明を進めよう。

sed 3.02 manual
http://ftp.yz.yamagata-u.ac.jp/pub/GNU/Manuals/sed-3.02/html_mono/sed.html

でもsedはイイ。