'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html. This notice shall appear on any product containing this material. .TH sed 1 "1998 年 7 月 23 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 sed \- ストリームエディタ .SH 形式 .LP .nf \fB/usr/bin/sed\fR [\fB-n\fR] \fIscript\fR [\fIfile\fR]... .fi .LP .nf \fB/usr/bin/sed\fR [\fB-n\fR] [\fB-e\fR \fIscript\fR]... [\fB-f\fR \fIscript_file\fR]... [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg4/bin/sed\fR [\fB-n\fR] \fIscript\fR [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg4/bin/sed\fR [\fB-n\fR] [\fB-e\fR \fIscript\fR]... [\fB-f\fR \fIscript_file\fR]... [\fIfile\fR]... .fi .SH 機能説明 .sp .LP \fBsed\fR ユーティリティーは、テキストファイルを読み込み、編集コマンドのスクリプトに従って内容を編集し、結果を標準出力に書き出すストリームエディタです。スクリプトは、\fIscript\fR オペランド文字列か、\fB-e\fR \fIscript\fR と \fB-f\fR \fIscript_file\fR のオプション引数の組み合わせで指定します。 .sp .LP \fBsed\fR ユーティリティーはテキストエディタですが、バイナリファイルや、ASCII NUL (\0) 文字を含んだファイル、長い行を含んだファイルは編集できません。 .SH オプション .sp .LP サポートしているオプションは、次のとおりです。 .sp .ne 2 .mk .na \fB\fB-e\fR \fIscript\fR \fR .ad .RS 19n .rt \fIscript\fR は、\fBsed\fR の編集コマンドです。\fIscript\fR のフォーマットの詳細については、「使用法」を参照してください。\fB-e\fR オプションを 1 つだけ指定し、\fB-f\fR オプションを指定しない場合、フラグ \fB-e\fR は省略できます。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR \fIscript_file\fR \fR .ad .RS 19n .rt \fIscript_file\fR に指定したファイルからスクリプトを読み取ります。\fIこのファイルの各行には、編集コマンドが 1 つずつ記述されています。\fR .RE .sp .ne 2 .mk .na \fB\fB-n\fR \fR .ad .RS 19n .rt デフォルトの出力を抑止します。 .RE .sp .LP \fB-e\fR と \fB-f\fR の両オプションは、それぞれ複数個指定できます。コマンドはすべて、どのオプションで指定されたかに関係なく、指定の順序でスクリプトに追加されます。 .SH オペランド .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .RS 11n .rt 内容を読み込んで編集するファイルのパス名。\fIfile\fR オペランドを複数個指定すると、指定した順序で読み込まれ、連結されたファイルを編集することになります。\fIfile\fR を指定しないと、標準入力が読み込まれます。 .RE .sp .ne 2 .mk .na \fB\fIscript\fR \fR .ad .RS 11n .rt 編集コマンドのスクリプトとして使用する文字列。アプリケーション側で、テキストファイルの規約に反するような \fIscript\fR を指定することはできませんが、文字列の最後の文字が復帰改行文字でなくてもかまいません。\fB\fR .RE .SH 使用法 .sp .LP スクリプトは、複数の編集コマンドで構成されます。スクリプト内の各行に、編集コマンドを 1 つずつ記述します。次のような書式を使用します。 .sp .LP [ \fIaddress\fR [ , \fIaddress\fR ] ] \fIcommand\fR [ \fIarguments\fR ] .sp .LP 最初のアドレス (\fIaddress\fR) の前と、コマンド (command) の前には、任意の数の空白文字を入力できます。また、最初のアドレスの前には、任意の数のセミコロンも入力できます。 .sp .LP 通常、\fBsed\fR は、次の動作を繰り返します。まず、\fBD\fR コマンドの実行後に何も残っていないことを確認し、入力行の 1 行を「パターンスペース」にコピーします。このとき、行末の復帰改行文字は含まれません。さらに、このパターンスペースを選択するアドレスを持つコマンドがあれば、そのコマンドをすべてパターンスペースに適用します。次に、その結果を標準出力にコピーし、パターンスペースを削除します。ただし、\fB-n\fR が指定されているときは、この処理は行いません。\fB\fR\fI\fR\fI\fRこのようにしてパターンスペースを標準出力または指定ファイルに書き出すたびに、\fBsed\fR はその後に復帰改行文字を付け加えます。\fI\fR .sp .LP コマンドのいくつかは、以前に取り出したパターンスペースを取り出しやすくするために、その一部または全部を「ホールドスペース」に保存します。\fI\fR\fI\fRパターンスペースとホールドスペースには、それぞれ最大 \fB8192\fR バイトのデータを記録できます。\fI\fR\fI\fR .SS "sed のアドレス" .sp .LP \fIaddress\fR には、10 進数 (すべてのファイルの入力行を累積的にカウントする)、\fB$\fR (入力の最終行をアドレス指定する)、コンテキストアドレスのほか、空 (区切りのみ) を指定できます。address は、\fBregexp\fR(5) のマニュアルページで解説しているように、スラッシュで囲んだ正規表現 (\fB/\fR\fIregular expression\fR\fB/\fR) で構成されます。 .sp .LP アドレスのないコマンド行は、すべてのパターンスペースを選択します。 .sp .LP アドレスを 1 つ持つコマンド行は、そのアドレスと一致するパターンスペースを選択します。 .sp .LP アドレスを 2 つ持つコマンド行は、1 つめのアドレスと一致する最初のパターンスペースから 2 つめのアドレスと一致する次のパターンスペースまでの範囲を選択します。その後プロセスが繰り返され、ふたたび 1 つ目のアドレスを探します。 (2 つめのアドレスが、1 つめのアドレスで選択した行番号以下の場合、1 つめのアドレスに対応する行だけが選択されます)。 .sp .LP 通常、アドレスとアドレスの間はコンマ (,) で区切りますが、セミコロン (;) を使うこともできます。 .SS "sed の正規表現" .sp .LP \fBsed\fR は、\fBregexp\fR(5) のマニュアルページで説明されている正規表現のほか、次の指定をサポートしています。 .sp .ne 2 .mk .na \fB\fI\cREc\fR \fR .ad .RS 10n .rt コンテキストアドレスでは、\fI\cREc\fR は /\fIRE\fR/ と同じ意味になります (\fIc\fR はバックスラッシュと復帰改行文字を除く任意の文字。RE は正規表現)。\fB\fR\fIc\fR に指定した文字がバックスラッシュの直後に現れた場合、これは正規表現の終了文字ではなく、リテラル文字と見なされます。たとえば、\fB\xabc\xdefx\fR というコンテキストアドレスでは、2 つめの \fBx\fR はリテラル文字 x です。この場合、正規表現は \fBabcxdef\fR になります。 .RE .sp .ne 2 .mk .na \fB\fB\n\fR \fR .ad .RS 10n .rt エスケープシーケンス \fB\n\fR は、パターンスペースに埋め込まれた復帰改行文字と一致します。\fI\fRコンテキストアドレスの正規表現内や置換コマンド内では、復帰改行文字をリテラル文字として処理できません。\fB\fR .RE .sp .LP 否定コマンド \fB!\fR を使用すると、編集コマンドは、選択されていないパターンスペースに適用されます ( 下記参照)。 .SS "sed の編集コマンド" .sp .LP 以下の表に、各機能に指定できるアドレスの最大数を一覧します。 .sp .LP \fBr\fR コマンドと \fBw\fR コマンドには、それぞれ \fIrfile\fR と \fIwfile\fR という任意指定のパラメータがあります。コマンド文字とパラメータの間は、1 つ以上の空白文字で区切ります。 .sp .LP 複数のコマンドをセミコロン (;) で区切って、1 つのコマンド行に記述できます。\fB\fR .sp .LP 引数 \fItext\fR は、行で構成されます。この引数が複数の行で構成されている場合、最終行以外のすべての行は \fB\\fR で終了し、復帰改行をエスケープします。\fB\fR復帰改行文字をテキストに埋め込む場合は、その前にバックスラッシュを付加してください。\fB\fRテキストに埋め込まれたその他のバックスラッシュは削除され、その直後の文字がリテラル文字として処理されます。つまり、テキストに埋め込まれたバックスラッシュは、\fBs\fR コマンドの置換文字列中のバックスラッシュと同様に処理されることになります。また、バックスラッシュを使用して、スクリプト行の行頭の空白文字やタブ文字が削除されるのを防ぐこともできます。\fIrfile\fR 引数や \fIwfile\fR 引数は、その前に空白文字を 1 つ入力して、コマンド行の末尾に置いてください。\fIwfile\fR パラメータを指定すると、そのファイルが作成されます。すでにファイルが存在していれば、その内容が書き換えられます。最大 10 個の \fIwfile\fR 引数を指定できます。 .sp .LP 正規表現のマッチングは、行単位ではなく、文字列全体で行われます。ただし、\fBsed\fR の正規表現では、復帰改行文字は \fB\n\fR と一致します。\fB\fRこのため、正規表現内では復帰改行文字は使用できません。\fB\fRまた、入力行末尾の復帰改行文字のマッチングに、\fB\n\fR は使用できません。パターンスペースには、復帰改行文字は編集コマンド \fBN\fR の結果として現れます。\fB\fR\fB\fR .sp .LP コマンドのうち 2 つは \fIcommand-list\fR の形式をとります。これは復帰改行で区切られたいくつかのコマンドの集まりです。以下にその形式を示します。\fB\fR\fB\fR .sp .in +2 .nf { \fIcommand\fR \fIcommand\fR } .fi .in -2 .sp .LP \fB{\fR の前後にはスペース文字を置くことができます。また、\fIcommand\fR の前にもスペースを置くことができます。終端の \fB}\fR の前には \fBNEWLINE\fR 文字を置く必要があり、 を前後に置くことができます。さらに、中括弧の前後にも空白文字を置くことができます。コマンドの前にも空白文字を置くことができますが、後には置けません。 .sp .LP 次の表に、機能と、許容されるアドレスの最大数を一覧表示します。 .sp .sp .TS tab() box; cw(.92i) |cw(1.38i) |cw(3.21i) lw(.92i) |lw(1.38i) |lw(3.21i) . 最大アドレス数コマンド説明 _ 1\fBa\\fR \fItext\fRT{ \fBN\fR コマンド実行または新サイクル開始による追加。次の入力行を読み取る前に \fItext\fR を出力します。 T} _ 2\fBb\fR \fIlabel\fRT{ \fIlabel\fR を持つ \fB:\fR コマンドに分岐します。\fIlabel\fR が空の場合は、スクリプトの最後に分岐します。ラベルは最大 8 文字が一意であると認識されます。 T} _ 2\fBc\\fR \fItext\fRT{ 変更。パターンスペースを削除します。\fItext\fR を出力します。次のサイクルを起動します T} 2\fBd\fRT{ パターンスペースを削除します。次のサイクルを起動します T} _ 2\fBD\fRT{ パターンスペースの先頭セグメントから最初の復帰改行までを削除します。次のサイクルを起動します (下記の \fBN\fR コマンドを参照) 。 T} _ 2\fBg\fRT{ パターンスペースの内容をホールドスペースの内容で置換します。 T} _ 2\fBG\fRT{ ホールドスペースの内容をパターンスペースに追加します。 T} _ 2\fBh\fRT{ ホールドスペースの内容をパターンスペースの内容で置換します。 T} _ 2\fBH\fRT{ パターンスペースの内容をホールドスペースに追加します。 T} _ 1\fBi\\fR \fItext\fRT{ 挿入。\fItext\fR を標準出力に出力します。 T} _ 2\fBl\fRT{ \fB/usr/bin/sed\fR: 明白な形式でパターンスペースを標準出力に一覧表示します。非印字文字は 8 進数表記法で表示されます。長い行は複数行に分けて表示されます。 T} _ T{ \fB/usr/xpg4/bin/sed\fR: 明白な形式でパターンスペースを標準出力に一覧表示します。非印字文字は 8 進数表記法で表示されます。長い行は複数行に分けて表示されます。文字 \fB\\\fR、\fB\a\fR、\fB\b\fR、\fB\f\fR、\fB\r\fR、\fB\t\fR、\fB\v\fR が対応するエスケープシーケンスとして出力されます。テーブル中にない非印字文字に関しては、各バイトごと (最上位ビットから) に 3 桁の 8 進数で、前にバックスラッシュが付加された形式で出力されます。1 バイトが 10 ビット以上のシステムでは、非印字文字のフォーマットは導入先により異なります。 T} T{ 長い行は折り返され、折り返しの発生地点はバックスラッシュと復帰改行文字によって示されます。折り返し地点の長さは不特定ですが、出力装置に適した値になっています。\fB\fR各行の終わりは \fB$\fR でマークされます。 T} _ 2\fBn\fRT{ デフォルト出力が抑止されていなければ、パターンスペースを標準出力にコピーします。パターンスペースを入力の次の行で置換します。 T} _ 2\fBN\fRT{ 入力の次の行をパターンスペースに追加し、復帰改行文字を埋め込みます。(現在の行番号が変わります) 。入力に次の行がなければ、\fBN\fR コマンド動詞はスクリプトの終わりに分岐し、新たなサイクルを開始せずに、パターンスペースを書き出さずに終了します。 T} _ 2\fBp\fRT{ 出力。パターンスペースを標準出力にコピーします。 T} _ 2\fBP\fRT{ パターンスペースの先頭セグメントから最初の復帰改行までを標準出力にコピーします。 T} _ 1\fBq\fRT{ 終了。スクリプトの最後に分岐します。新しいサイクルを起動しません。 T} _ 2\fBr\fR \fIrfile\fRT{ \fIrfile\fR の内容を読み取ります。次の入力行を読み取る前にこの内容を出力します。\fIrfile\fR が存在しないまたは読み取れないときは、エラーとはならず、あたかも空のファイルであるかのように扱われます。 T} _ 2\fBt\fR \fIlabel\fRT{ テスト。入力行の最新の読み取りまたは \fBt\fR の実行以降に代入が行われている場合は、\fIlabel\fR を持つ \fB:\fR コマンドに分岐します。\fIlabel\fR が空の場合は、スクリプトの最後に分岐します。 T} _ 2\fBw\fR \fIwfile\fRT{ 書き込み。\fIwfile\fR にパターンスペースを追加します。最初の \fBw\fR が発生すると、\fIwfile\fR がクリアされます。後続の \fBw\fR が呼び出されると、追加されます。\fBsed\fR コマンドが使用されるごとに、\fIwfile\fR が上書きされます。 T} _ 2\fBx\fRT{ パターンスペースおよびホールドスペースの内容を交換します。 T} _ 2\fB!\fR \fIcommand\fRT{ 否定。アドレスによって選択\fIされなかった\fR行だけに、\fIcommand\fR (または、\fIcommand\fR が \fB{ \fR の場合はグループ) を適用します。 T} _ 0\fB:\fR \fIlabel\fRT{ このコマンドは何もしません。これは分岐するための \fBb\fR および \fBt\fR コマンド用の \fIlabel\fR を持っています。 T} _ 1\fB=\fRT{ 現在の行番号を 1 行として標準出力します。 T} _ 2\fB{\fR\fIcommand-list\fR\fB}\fRT{ パターンスペースが選択された場合のみ、\fIcommand-list\fR を実行します。 T} 0T{ 空のコマンドは無視されます。 T} _ 0\fB#\fRT{ スクリプトファイルの行の先頭文字が \fB#\fR の場合、その行全体が注釈行として扱われます。 ただし、先頭行に \fB#\fR があり、\fB#\fR の後の文字が \fBn\fR の場合は唯一の例外で、デフォルトの出力が抑止されます。\fB#n\fR の後の残りの行も無視されます。スクリプトファイルには 1 つ以上の非注釈行が必要です。 T} .TE .sp .sp .TS tab() box; cw(.92i) |cw(4.58i) lw(.92i) |lw(4.58i) . 最大アドレス数T{ コマンド (\fIstrings\fR を使用) と説明 T} _ 2\fBs\fR/\fIregular expression\fR/\fIreplacement\fR/\fIflags\fR T{ パターンスペース内の \fIregular expression\fR に一致する文字列を \fIreplacement\fR に置換します。正規表現 (regular expression) と置換文字列 (replacement) を区切るのに、スラッシュの代わりに、バックスラッシュと復帰改行以外の任意の文字を使用できます。正規表現および置換文字列内で、区切り文字を文字列の一部として使用したければ、前にバックスラッシュを付加してください。 T} T{ 置換文字列中のアンパサンド (\fB&\fR) は、正規表現に一致する文字列に置き換えられます。\fI\fRこの \fB&\fR が持つ特殊な意味は、前にバックスラッシュを付加すれば無効にできます。\fIn\fR の前にバックスラッシュを付加した \fB\\fR\fIn\fR は、対応する後方参照表現と一致するテキストに置き換えられます。\fIreplacement\fR を先頭から終端まで走査する際にバックスラッシュ (\) が検出されると、後続の文字は特殊な意味を持っていたとしてもその意味を失います。&、\、数字以外の文字にそれぞれどのような特殊な意味が与えられるかは、不特定です。 T} T{ 行は、その中に復帰改行文字を使用することによって分割できます。\fB\fRアプリケーションは、\fIreplacement\fR 内の復帰改行文字の前にバックスラッシュを置くことによって、これをエスケープする必要があります。\fB\fR置換文字列が、置換後の文字列と同一である場合も、置換が行われたことになります。 T} T{ \fIflags\fR には以下のものを、0 個以上指定できます。 T} T{ \fIn\fR \fIn\fR= 1 - 512。\fIregular expression\fR の \fIn\fR 番目の発生を置換します。 T} T{ \fBg\fR グローバル。\fIregular expression\fR の最初に一致したものだけでなく、重ならないすべての例を置換します。\fIg\fR と \fIn\fR の両方を指定した場合、結果は不確定です。 T} _ T{ \fBp\fR 置換が行われた場合、パターンスペースを出力します。 T} T{ \fBP\fR パターンスペースの先頭セグメントから最初の復帰改行までを、標準出力にコピーします。 T} T{ \fBw\fR \fIwfile\fR 書き込み。置換が行われた場合は、\fIwfile\fR にパターンスペースを追加します。最初の \fBw\fR が発生すると、\fIwfile\fR がクリアされます。後続の \fBw\fR が呼び出されると、追加されます。\fBsed\fR コマンドが使用されるごとに、\fIwfile\fR が上書きされます。 T} _ 2\fBy\fR/ \fIstring1\fR / \fIstring2\fR / T{ 変形。\fIstring1\fR にあるすべての文字を \fIstring2\fR の対応する文字と交換します。\fIstring1\fR と \fIstring2\fR の文字は同じ数でなければなりません。\fIstring1\fR 中に同じ文字が複数回現れた場合の結果は定義されていません。2 つの文字列を区切るのに、スラッシュの代わりに、バックスラッシュと復帰改行以外の任意の文字を使用できます。\fB\fR\fIstring1\fR と\fIstring2\fR 内で、区切り文字を文字列の一部として使用したければ、前にバックスラッシュを付加してください。たとえば、\fBy\fR/abc/ABC/は、a を A で、b を B で、および c を C で置き換えます。 T} .TE .sp .LP ファイルが 2G バイト (2^31 バイト) 以上ある場合の \fBsed\fR の動作については、\fBlargefile\fR(5) を参照してください。 .SH 使用例 .LP \fB例 1 \fRsed スクリプトの例 .sp .LP 以下に示す \fBsed\fR スクリプトは、\fBBSD \fR\fBcat\fR \fB-s\fR コマンドをシミュレートし、標準入力から余分な空白行を圧縮します。 .sp .in +2 .nf sed \(min ' # Write non-empty lines. /./ { p d } # Write a single empty line, then look for more empty lines. /^$/ p # Get next line, discard the held (empty line), # and look for more empty lines. :Empty /^$/ { N s/.// b Empty } # Write the non-empty line before going back to search # for the first in a set of empty lines. p \&' .fi .in -2 .SH 環境 .sp .LP \fBsed\fR の実行に影響を与える次の環境変数についての詳細は、\fBenviron\fR(5) を参照してください。\fBLANG\fR、\fBLC_ALL\fR、\fBLC_COLLATE\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR、および \fBNLSPATH\fR。 .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .ne 2 .mk .na \fB\fB0\fR \fR .ad .RS 7n .rt 正常終了。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR \fR .ad .RS 7n .rt エラーが発生した。 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .SS "/usr/bin/sed" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os _ CSI未対応 .TE .SS "/usr/xpg4/bin/sed" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/xopen/xcu4 _ CSI有効 _ インタフェースの安定性確実 _ 標準T{ \fBstandards\fR(5) を参照してください。 T} .TE .SH 関連項目 .sp .LP \fBawk\fR(1), \fBed\fR(1), \fBgrep\fR(1), \fBattributes\fR(5), \fBenviron\fR(5), \fBlargefile\fR(5), \fBregexp\fR(5), \fBstandards\fR(5)