sedafter: a stream editor


Top - 使用方法 - 使用方法(grepモード) - コマンド - 開発者ガイド - Javadoc - ダウンロード

sedコマンドは以下のような構文をもちます。

[addresses[!]]command


addressには以下の形式が指定できます。 addressの後に"!"を付加することによりマッチを逆にすることができます。

行番号1
行番号1に指定した行についてコマンドを実行します。

行番号1,行番号2
行番号1行番号2に指定した行について コマンドを実行します。

/正規表現1/[I][M]
正規表現1に最初にマッチした 行についてコマンドを実行します。
本実装で使用できる正規表現はUNIX sedで使用できる基本正規表現(BRE)です。
正規表現は\%正規表現%の形式でも記述できます。 ここで、"%"は任意の1文字です
正規表現の後にフラグを指定することができます。 フラグの意味は以下のとおりです。

/正規表現1/[I][M],/正規表現2/[I][M]
正規表現1とその後にマッチした正規表現2に ある行についてコマンドを実行します。

行番号1,/正規表現2/[I][M]
行番号1とその後にマッチした正規表現2に 指定した行についてコマンドを実行します。

/正規表現1/[I][M],行番号2
正規表現1行番号2に ある行についてコマンドを実行します。 行番号が最初にマッチした行の前にあるときは無視されます。

/正規表現1/[I][M],+行数
正規表現1から行数だけ先の 行についてコマンドを実行します。 行数が最終行を超えたときは最後の行まで実行します。

g/正規表現/[I][M]
すべての正規表現にマッチした行についてコマンドを実行します。

$
最後の行についてコマンドを実行します。

行番号1,$
行番号1から最後の行についてコマンドを実行します。

/正規表現1/[I][M],$
正規表現1にマッチした行から 最後の行についてコマンドを実行します。

行番号~行数
行番号にから指定した行数ごとに コマンドを実行します。


本実装ではUNIXの基本正規表現(BRE)が使用できます。

文字
1文字をあらわします。

.
任意の1文字をあらわします。

*
0文字以上の繰返しをあらわします。

\{n\}
n文字の繰返しをあらわします。

\{n,\}
n文字以上の繰返しをあらわします。

\{n,m\}
n文字からm文字までの繰返しをあらわします。

\+
1文字以上の繰返しをあらわします。

\?
0文字または1文字の繰返しをあらわします。

[文字セット]
文字の集合を表します。先頭に"^"がつくときは否定を表します。 文字セットは以下のとおりです。


\(正規表現\)
指定された正規表現をキャプチャします。 キャプチャされた正規表現は正規表現とsコマンドの置換文字列で使用できます。

^
正規表現の先頭にあるときは行の先頭にマッチします。

$
正規表現の末尾にあるときは行の末尾にマッチします。


本実装では以下のコマンドが使用できます。

s/正規表現/置換文字列/フラグ
文字列を置換します。
置換文字列には正規表現でキャプチャした文字列も指定できます。
フラグには以下の文字が使用可能です。
#
(行指定はできません)コメント行です。

q
(1つの行以下のみ指定できます)ストリームエディタの実行を終了します。

d
該当行を削除します。

p
該当行を表示します。

n
(自動出力が抑制されていなければ)現在のパターンスペースを出力し、 新たに入力をパターンスペースに取り込みます。

{コマンド[,...]}
マッチした行に対して複数のコマンドを実行します。 行番号を指定することにより実行する行をさらに絞り込むことができます。

y/置換前文字/置換後文字/
対応する文字を置き換えます。 文字の指定にはa-zのように範囲指定もできます。

a\
text
指定行の後にtextを追加します。 行が複数指定のときはそれぞれの行の後にtextを追加します。

i\
text
指定行の前にtextを追加します。 行が複数指定のときはそれぞれの行の前にtextを追加します。

c\
text
指定行をtextに置き換えます。 行が複数指定のときはマッチした行をtextに置き換えます。
(注意: 行の指定に"!"を使用したとき、 "{...}"コマンドのブロックで実行したとき、 g/.../を使用したとき、n~mを使用したときは マッチしたそれぞれの行がtextに置き換わります)

=
現在の行番号を出力します

l
現在のパターンスペースを制御文字を見える形で出力します。 行の最後には"$"文字がつきます。

rファイル名
(1つの行のみ指定できます)ファイルを読み込んで出力します

wファイル名
現在のパターンスペースを出力します。

D
現在のパターンスペースが複数行からなるとき、 パターンスペースの最初の行を削除します。 パターンスペースが単一の行からなるときはdコマンドと同じです。

N
現在のパターンスペースに改行文字を付加し、 その後に入力から次の行を読み込みパターンスペースに付加します。

P
現在のパターンスペースが複数行からなるとき、 パターンスペースの最初の行を表示します。 パターンスペースが単一の行からなるときはpコマンドと同じです。

h
現在のホールドスペースをパターンスペースの内容に変更します。

H
現在のホールドスペースに改行文字を付加し、 その後に現在のパターンスペースをホールドスペースに付加します。

g
現在のパターンスペースをホールドスペースの内容に変更します。

G
現在のパターンスペースに改行文字を付加し、 その後に現在のホールドスペースをパターンスペースに付加します。

x
現在のパターンスペースとホールドスペースの内容を交換します。

:label
ラベルを定義します。

blabel
行にマッチしたとき制御をラベルに移します。

tlabel
行にマッチし、直前のsコマンドにより置換がされたとき 制御をラベルに移します。

?
現在のパターンスペースの内容を出力ウィンドウに表示します。 出力ウィンドウは実行が終了したときに表示されます。