UNIX系OSで大抵装備されている(と思う)、行単位の編集を行うエディタ(コマンド)。

  1. 文字列の置換や削除を
  2. 正規表現を用いて
  3. 機械的・大量に

やりたい時に威力を発揮する。

基本

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まで使えるらしい。

有用リンク


Last-modified: Sat, 19 Feb 2005 18:09:54 JST