コマンドラインからファイルを編集する

ストリームエディタsed

sedとはviなどで行うファイルへの編集をコマンドラインで行うコマンドである。 sedとシェルスクリプトを組み合わせて使うことによって、 多くのファイルを自動的に編集することができる。

sedの形式

sedの基本的には以下の様な形で使う。

sed 'command' datafile

commandの部分にsedのコマンドを使えば、 datafileの中がそのコマンドによって編集(書き換えられたり、消されたり)する。
編集された結果は標準出力に出力される。 だから結果を保存しておきたい時には リダイレクションなどを使って ファイルに書き込んでおかなければならない。

sedの使用例

sedを使う時に注意することは以下の通り。

ここではコマンドとしてp, d, sコマンドの例を紹介してあるが コマンドの種類や、オプションなどの使い方はこれだけではないので詳しいことは sedのリファレンス・マニュアルを参照のこと。

# cat data           <- サンプルデータファイル
test1 test2
test3 test4
tmp1 tmp2 tmp3
# sed '2p' data            <- 2行目を表示するつもり
test1 test2                      <- -n を忘れると全部表示される
test3 test4
test3 test4
tmp1 tmp2 tmp3
# sed -n '2p' data            <- 2行目を表示
test3 test4
# sed -n '2,3p' data            <- 2行目から3行目までを表示
test3 test4
tmp1 tmp2 tmp3
# sed -n '/tmp/p' data          <- tmpを含む行を表示
tmp1 tmp2 tmp3
# sed -n '2,/tmp/p' data        <- 2行目からtmpを含む行までを表示
test3 test4
tmp1 tmp2 tmp3
# sed '2d' data            <- 2行目を削除
test1 test2
tmp1 tmp2 tmp3
# sed 's/test/aaa/' data        <- testをaaaに変換
aaa1 test2
aaa3 test4
tmp1 tmp2 tmp3
# sed 's/test/aaa/g' data       <- 全てのtestをaaaに変換
aaa1 aaa2
aaa3 aaa4
tmp1 tmp2 tmp3
# sed 's/test[23]/aaa/' data    <- test2とtest3をaaaに変換
test1 aaa
aaa test4
tmp1 tmp2 tmp3
#

Prev | Next
Home | Contents
abe@injapan.net