sed の動作
sed プログラムは、その入力を標準入力から受け取り、 その入力をコマンド・ファイルのコマンドの指図に従って変更し、 結果として生じたストリームを標準入力に書き出す、ストリーム・エディターです。
コマンド・ファイルを指定せず、 sed コマンドでフラグを使用しない場合、 sed プログラムは標準入力を変更なしで標準出力にコピーします。 プログラムへの入力は、次の 2 つのソースから行われます。
| プログラム | 説明 |
|---|---|
| 入力ストリーム | 1 つまたは複数のファイルからの、もしくはキーボードから 直接入力された、ASCII 文字のストリーム。 このストリームは、編集するデータです。 |
| コマンド | 次に示す一般形式の、一組のアドレスおよび実行する関連コマンド。パラメーター Line1 および Line2 は、アドレスと呼ばれます。 アドレスは、入力ストリームで突き合わせるパターンであっても、
入力ストリーム内の行番号であっても構いません。 |
編集コマンドは、sed コマンドに -e フラグを指定して 入力することもできます。
sed は、編集する際、 パターン・スペースというメモリー内の領域に、 一度に 1 行の入力ストリームを読み取ります。 データの行がパターン・スペースにあるとき、sed は、 コマンド・ファイルを読み取り、コマンド・ファイル内のアドレスとパターン・スペース内の 文字の突き合わせを試みます。 パターン・スペース内にあるなんらかのものと一致したアドレスを検出すると、 sed は、 そのアドレスと一致したパターン・スペース内の部分に対して該当の アドレスに関連するコマンドを実行します。 そのコマンドの結果はパターン・スペースの内容を変更し、 したがって、パターン・スペースはそれに続くすべてのコマンドの入力となります。
sed は、コマンド・ファイルのすべてのアドレスをパターン・スペースの 内容と突き合わせ終わったとき、 パターン・スペースの最後の内容を標準出力に書き出します。 次にこのコマンドは、新規入力行を標準入力から読み取り、 コマンド・ファイルの先頭からその プロセスをもう一度始動します。
プロセスの動作方法を変更する編集コマンドもあります。
sedコマンドで使用されるFlagsは、コマンドの動作も変更できます。