sed
仕事で、ある設定ファイルの特定行に、設定値を挿入していくプログラムを設計している。
単純なテキストの行操作にはsedが良いという情報は知っていた。
しかし実際に利用したことはなかった。
今回業務で必要な処理は、sedで十分なはず。そう思い調査を開始。
大方のことはmanを見ればわかる。
http://www.linux.or.jp/JM/html/GNU_sed/man1/sed.1.html
開発環境は、windowsでcygwinを走らせているので、そこで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のバージョンを確認する。
cygwinのsedは4.09。
linuxのsedは3.02。
linux環境は社の開発環境のスタンダード仕様で、とても古い設定になっている。
どうやらバージョンの違いにより挙動が変わっているようだ。
今はここまでしかわからん。
続きは以下の3.02用マニュアルを読んで解明を進めよう。
でもsedはイイ。