sed

機能

ストリームエディタ

起動方法

    sed [-n] [-e command] [-f script-file] [command] [datafile]

説明

datafileから入力されたテキストデータを、commandにしたがった作業をして出力するフィルタープログラムである。
commandの部分は

(アドレス指定)(コマンド)(文字列)

の形をしている。
入力はdatafileが指定されない時は標準入力になる。 出力は標準出力である。

オプション

-n
デフォルトの出力を抑制する。
コマンドの p などといっしょに使用する。
-e command
コマンドを指定する。このオプションが複数指定された場合は左から順番に実行される。
-f script-file
コマンドを書き込んだスクリプトファイルの指定。このオプションが複数指定された場合は左から順番に実行される。

アドレス指定

指定なし
全てのデータ
n
n行目
n,m
n行目からm行めまで
/string/
stringにマッチする行(stringの部分には正規表現が使用できる)
n,/string/
n行目からstringにマッチする行まで
/string1/,/string2/
string1にマッチする行からstring2にマッチする行まで

コマンド

a
文字列のアペンド
c
その行を指定された文字列に変換
d
削除
i
文字列のインサート
p
表示
r
ファイルを読み込んで挿入
s/str1/str2/[g|n]
str1をstr2に変換
str1の部分には正規表現が使用できる
オプションとして次のものが使用できる。
g
gをつけると全ての文字列を変換
n
n として数字を使用すると、n 番めの文字列が変換される。
(例) 2番目の aaa を bbb に変換。
s/aaa/bbb/2

使用例

# cat data
test1 test2
test3 test4
tmp1 tmp2 tmp3
# sed '2,3p' data            <- 2行目から3行目までを表示
test1 test2                      <- -n を忘れると1行が2回表示される。
test3 test4
test3 test4
tmp1 tmp2 tmp3
tmp1 tmp2 tmp3
# sed -n '2,3p' data            <- 2行目から3行目までを表示(-n を忘れないこと)
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 -n -e '1p' -e '3p' data   <- 1行目と3行目を表示
test1 test2
tmp1 tmp2 tmp3
# sed '/test/d' data            <- testを含む行を削除
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

# sed 's/test.$/aaa/' data      <- 行の最後にあるtest.を変換
test1 aaa
test3 aaa
tmp1 tmp2 tmp3

# pwd
/CG/CG98/ad980000
# pwd | sed 's/.*\///'         <- ディクトリ名部分を取る
ad980000

参考


Home | Contents
Mail