UNIX系OSで大抵装備されている(と思う)、行単位の編集を行うエディタ(コマンド)。
やりたい時に威力を発揮する。
sed (command)
とすれば、標準入力の処理結果が標準出力へ出力される。GNUのsedだと、この後にファイル名を入力すればそのファイルを処理してくれるが、リダイレクトとパイプで
cat hoge.txt | sed (command) > fuga.txt
とかした方が多分UNIX的なのだろう。
's/foo/bar/' 各行のfooをbarに置換 's/foo/bar/g' 各行の全てのfooをbarに置換 '/hoge/d' hogeを含む行を削除 '/hoge/p' hogeを含む行を表示
'n1,n2s/foo/bar/g' n1行からn2行まで、fooを全てbarに置換 'n1,n2d' n1行からn2行まで削除 'n1,n2p' n1行からn2行まで表示
「マッチした部分を変数に格納し、後から取り出せる」みたいな事をやってくれる機能。
-- Note -- I am No1 He is No2 Is she No3 ? No
みたいなテキストで、No1 - No3 を No01 - No03 に変えたいとする。でも、"Note"と"No"はそのままにしたい。こんな時は
's/No\([0-9]\)/No0\1/g'
とする。\( と \) で囲まれた部分にマッチしたものを(ここでは数字)、後で\1として取り出している。実行結果は以下のようになる。
-- Note -- I am No01 He is No02 Is she No03 ? No
\9まで使えるらしい。