sed の動作

sed プログラムは、その入力を標準入力から受け取り、 その入力をコマンド・ファイルのコマンドの指図に従って変更し、 結果として生じたストリームを標準入力に書き出す、ストリーム・エディターです。

コマンド・ファイルを指定せず、 sed コマンドでフラグを使用しない場合、 sed プログラムは標準入力を変更なしで標準出力にコピーします。 プログラムへの入力は、次の 2 つのソースから行われます。

プログラム 説明
入力ストリーム 1 つまたは複数のファイルからの、もしくはキーボードから 直接入力された、ASCII 文字のストリーム。 このストリームは、編集するデータです。
コマンド 次に示す一般形式の、一組のアドレスおよび実行する関連コマンド。
[Line1 [,Line2] ] command [argument]
パラメーター Line1 および Line2 は、アドレスと呼ばれます。 アドレスは、入力ストリームで突き合わせるパターンであっても、 入力ストリーム内の行番号であっても構いません。

編集コマンドは、sed コマンドに -e フラグを指定して 入力することもできます。

sed は、編集する際、 パターン・スペースというメモリー内の領域に、 一度に 1 行の入力ストリームを読み取ります。 データの行がパターン・スペースにあるとき、sed は、 コマンド・ファイルを読み取り、コマンド・ファイル内のアドレスとパターン・スペース内の 文字の突き合わせを試みます。 パターン・スペース内にあるなんらかのものと一致したアドレスを検出すると、 sed は、 そのアドレスと一致したパターン・スペース内の部分に対して該当の アドレスに関連するコマンドを実行します。 そのコマンドの結果はパターン・スペースの内容を変更し、 したがって、パターン・スペースはそれに続くすべてのコマンドの入力となります。

sed は、コマンド・ファイルのすべてのアドレスをパターン・スペースの 内容と突き合わせ終わったとき、 パターン・スペースの最後の内容を標準出力に書き出します。 次にこのコマンドは、新規入力行を標準入力から読み取り、 コマンド・ファイルの先頭からその プロセスをもう一度始動します。

プロセスの動作方法を変更する編集コマンドもあります。

sedコマンドで使用されるFlagsは、コマンドの動作も変更できます。