ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- ストリームエディタ
/usr/bin/sed [-n] script [file]...
/usr/bin/sed [-n] [-e script]... [-f script_file]... [file]...
/usr/xpg4/bin/sed [-n] script [file]...
/usr/xpg4/bin/sed [-n] [-e script]... [-f script_file]... [file]...
sed ユーティリティは、テキストファイルを読み込み、編集コマンドのスクリプトに従って内容を編集し、結果を標準出力に書き出すストリームエディタです。スクリプトは、script オペランド文字列か、-e script と -f script_file のオプション引数の組み合わせで指定します。
sed ユーティリティはテキストエディタですが、バイナリファイルや、ASCII NUL (\0) 文字を含んだファイル、長い行を含んだファイルは編集できません。
次のオプションがサポートされています。
script は、sed の編集コマンドです。script のフォーマットの詳細については、「使用法」を参照してください。-e オプションを 1 つだけ指定し、-f オプションを指定しない場合、フラグ -e は省略できます。
script_file に指定したファイルからスクリプトを読み取ります。このファイルの各行には、編集コマンドが 1 つずつ記述されています。
デフォルトの出力を抑止します。
-e と -f の両オプションは、それぞれ複数個指定できます。コマンドはすべて、どのオプションで指定されたかに関係なく、指定の順序でスクリプトに追加されます。
次のオペランドがサポートされています。
内容を読み込んで編集するファイルのパス名。file オペランドを複数個指定すると、指定した順序で読み込まれ、連結されたファイルを編集することになります。file を指定しないと、標準入力が読み込まれます。
編集コマンドのスクリプトとして使用する文字列。アプリケーション側で、テキストファイルの規約に反するような script を指定することはできませんが、文字列の最後の文字が復帰改行文字でなくてもかまいません。
スクリプトは、複数の編集コマンドで構成されます。スクリプト内の各行に、編集コマンドを 1 つずつ記述します。次のような書式を使用します。
[ address [ , address ] ] command [ arguments ]
最初のアドレス (address) の前と、コマンド (command) の前には、任意の数の空白文字を入力できます。また、最初のアドレスの前には、任意の数のセミコロンも入力できます。
通常、sed は、次の動作を繰り返します。まず、D コマンドの実行後に何も残っていないことを確認し、入力行の 1 行を「パターンスペース」にコピーします。このとき、行末の復帰改行文字は含まれません。さらに、このパターンスペースを選択するアドレスを持つコマンドがあれば、そのコマンドをすべてパターンスペースに適用します。次に、その結果を標準出力にコピーし、パターンスペースを削除します。ただし、-n が指定されているときは、この処理は行いません。このようにしてパターンスペースを標準出力または指定ファイルに書き出すたびに、sed はその後に復帰改行文字を付け加えます。
コマンドのいくつかは、以前に取り出したパターンスペースを取り出しやすくするために、その一部または全部を「ホールドスペース」に保存します。パターンスペースとホールドスペースには、それぞれ最大 8192 バイトのデータを記録できます。
address には、10 進数 (すべてのファイルの入力行を累積的にカウントする)、$ (入力の最終行をアドレス指定する)、コンテキストアドレスのほか、空 (区切りのみ) を指定できます。address は、regexp(5) のマニュアルページで解説しているように、スラッシュで囲んだ正規表現 (/regular expression/) で構成されます。
アドレスのないコマンド行は、すべてのパターンスペースを選択します。
アドレスを 1 つ持つコマンド行は、そのアドレスと一致するパターンスペースを選択します。
アドレスを 2 つ持つコマンド行は、1 つめのアドレスと一致する最初のパターンスペースから 2 つめのアドレスと一致する次のパターンスペースまでの範囲を選択します。以降、同じプロセスが繰り返されます (2 つめのアドレスが、1 つめのアドレスで選択した行番号以下の場合、1 つめのアドレスに対応する行だけが選択されます)。
通常、アドレスとアドレスの間はコンマ (,) で区切りますが、セミコロン (;) を使うこともできます。
sed は、regexp(5) のマニュアルページで説明されている正規表現のほか、次の指定をサポートしています。
コンテキストアドレスでは、\cREc は /RE/ と同じ意味になります (c はバックスラッシュと復帰改行文字を除く任意の文字。RE は正規表現)。c に指定した文字がバックスラッシュの直後に現れた場合、これは正規表現の終了文字ではなく、リテラル文字と見なされます。たとえば、\xabc\xdefx というコンテキストアドレスでは、2 つめの x はリテラル文字 x です。この場合、正規表現は abcxdef になります。
エスケープシーケンス \n は、パターンスペースに埋め込まれた復帰改行文字と一致します。コンテキストアドレスの正規表現内や置換コマンド内では、復帰改行文字をリテラル文字として処理できません。
否定コマンド ! を使用すると、編集コマンドは、選択されていないパターンスペースに適用されます ( 下記参照)。
以下の表に、各機能に指定できるアドレスの最大数を一覧します。
r コマンドと w コマンドには、それぞれ rfile と wfile という任意指定のパラメータがあります。コマンド文字とパラメータの間は、1 つ以上の空白文字で区切ります。
複数のコマンドをセミコロン (;) で区切って、1 つのコマンド行に記述できます。
引数 text は、行で構成されます。この引数が複数の行で構成されている場合、最終行以外のすべての行は \ で終了し、復帰改行をエスケープします。復帰改行文字をテキストに埋め込む場合は、その前にバックスラッシュを付加してください。テキストに埋め込まれたその他のバックスラッシュは削除され、その直後の文字がリテラル文字として処理されます。つまり、テキストに埋め込まれたバックスラッシュは、s コマンドの置換文字列中のバックスラッシュと同様に処理されることになります。また、バックスラッシュを使用して、スクリプト行の行頭の空白文字やタブ文字が削除されるのを防ぐこともできます。rfile 引数や wfile 引数は、その前に空白文字を 1 つ入力して、コマンド行の末尾に置いてください。wfile パラメータを指定すると、そのファイルが作成されます。すでにファイルが存在していれば、その内容が書き換えられます。最大 10 個の wfile 引数を指定できます。
正規表現のマッチングは、行単位ではなく、文字列全体で行われます。ただし、sed の正規表現では、復帰改行文字は \n と一致します。このため、正規表現内では復帰改行文字は使用できません。また、入力行末尾の復帰改行文字のマッチングに、\n は使用できません。パターンスペースには、復帰改行文字は編集コマンド N の結果として現れます。
コマンドのうち 2 つは command-list の形式をとります。これは復帰改行で区切られたいくつかのコマンドの集まりです。以下にその形式を示します。
{ command command }
{ の前後にはスペース文字を置くことができます。また、command の前にもスペースを置くことができます。最後の } の前は復帰改行文字でなければなりません。この復帰改行文字の前後にも、空白文字を置くことができます。さらに、中括弧の前後にも空白文字を置くことができます。コマンドの前にも空白文字を置くことができますが、後には置けません。
次の表は、機能の一覧です。
|
|
ファイルが 2G バイト (231 バイト) 以上ある場合の sed の動作については、largefile(5) を参照してください。
例 1 sed スクリプトの例
以下に示す sed スクリプトは、BSD cat -s コマンドをシミュレートし、標準入力から余分な空白行を圧縮します。
sed -n ' # Write non-empty lines. /./ { p d } # Write a single empty line, then look for more empty lines. /^$/ p # Get next line, discard the held <newline> (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 '
sed の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の終了値が返されます。
正常終了。
エラーが発生しました。
属性についての詳細は、attributes(5) を参照してください。
|
|
awk(1), ed(1), grep(1), attributes(5), environ(5), largefile(5), regexp(5), standards(5)