sed でよく使われるコマンドとその使用例をまとめておきます.
s (置換)
sed でもっともよく使われるのが置換コマンドです.s コマンドは
sed "10s/[0-9][0-9]/'/" nobelprize.txt
のように,s の後にスラッシュ / で区切って検索パターンと置換したい文字列を並べます.なお s コマンドではアドレス部分を省略できます.省略した場合,検索パターンにマッチした全ての行で置換が行われます.
最後のスラッシュの後ろにオプションをつけることで,s コマンドの動作を変えることができます.このオプションを sed ではフラグと呼びます.代表的なフラグは以下の通りです.
- g
- オプション無しで s コマンドを使うと,指定した検索パターンが最初に出てきた場所のみが置換されます.g オプションを指定すると,行内でマッチした全ての位置で置換が行われます.
- 数字
- s コマンドの最後のスラッシュの後ろに /3 と書くと「指定されたパターンが 3 番目にマッチした場所」のみで置換が行われます.他の数字を書くことで「n 番目にマッチした場所」で置換を行うことができます.
- p
- パターンスペースの内容を表示します.
y (1 文字の置換)
y コマンドは何種類かの文字を一斉に別の文字に置き換えるコマンドです.たとえば
y/abc/xyz/
と書くと a, b, c がそれぞれ x, y, z に置換されます.よって
y/abcdefghjiklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
と書くと,全てのアルファベット小文字が大文字に変換されます.
sed "y/abcdefghjiklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/" nobelprize.txt
2011 SAUL PERLMUTTER, BRIAN P. SCHMIDT, ADAM G. RIESS
2010 ANDRE GEIM, KONSTANTIN NOVOSELOV
2009 CHARLES KUEN KAO, WILLARD S. BOYLE, GEORGE E. SMITH
2008 YOICHIRO NAMBU, MAKOTO KOBAYASHI, TOSHIHIDE MASKAWA
...p (出力)
p はパターンスペース内のデータを画面に表示するコマンドです.通常は sed の -n オプションと組み合わせ,目的の行のみを表示させるのに使います.たとえば
sed -n "/Paul/p" nobelprize.txt
とすると,sed は “Paul” を含む行のみを表示します.このようにして sed を grep 代わりに使えます.
q (終了)
q コマンドは sed を終了させるコマンドです.たとえば
sed "10q" nobelprize.txt
と入力すると,最初の 10 行を表示し終わったところで sed が終了します.
d (削除)
d コマンドはパターンスペース内のデータを削除し,次の行を読み込む命令です.たとえば
sed "/Paul/!d" nobelprize.txt
とすると “Paul” を含まない行は表示されません.