総合手引 | セクション 1 | English | Deutsch | オプション |
sed
への第一引数として単一のコマンドを指定することができます。複数のコマンドを指定するときは、
オプションは以下のとおりです。
| |
正規表現を、Basic Regular expression (BRE) ではなく、 拡張 (モダン) 正規表現として解釈します。 re_format(7) マニュアルページは、どちらの書式も完全に記述しています。 | |
| |
通常、
"w"
関数の引数となるファイルは、処理に先立って空のファイルとして作成されます。
| |
| |
編集コマンド command をコマンドリストに追加します。 | |
| |
ファイル command_file に記述されたコマンドをコマンドリストに追加します。 編集コマンドは 1 行ごとに記述します。 | |
| |
ファイルをその場で編集し、指定した extension のバックアップを保存します。 長さ 0 の extension が指定された場合、バックアップは保存されません。 その場で編集するときに、長さ 0 の extension を指定することは勧められません。 ディスク空間が尽きてしまったときなどに、 ファイルが壊れたり内容が一部だけになってしまうことがあるからです。 | |
| |
デフォルトでは、入力行は、すべてのコマンドを適用した後に標準出力に書
き出されます。
| |
sed のコマンドは以下の形式です。
[address[,address]]function[arguments]
最初の address の前と function の前に空白を置くことができます。
通常 sed は、入力ファイルの各行を改行コードを含めずに パターンスペース にコピーし( "D" 関数の後でパターンスペースになにか残っている場合を除きます)、 順にコピーされた内容に適応する address 指定を持つコマンドを 適用し、パターンスペースの内容を改行を付与して標準出力へ書き出し、 パターンスペースを消去するという動作を繰り返します。
いくつかの関数は、パターンスペースの一部または全部を保持できる ホールドスペース を利用します。ホールドスペースの内容は、以降の処理に用いることができ ます。
address 指定を持たないコマンドは、すべてのパターンスペースを選択します。
1つの address 指定を持つコマンドは、その address 指定にマッチする すべてのパターンスペースを選択します。
2 つの address 指定を持つコマンドは、address の両端を含んだ範囲を 選択します。 この範囲は、1 つめの address にマッチしたパターンスペースで始まり、 その後に続く 2 つめの address にマッチしたパターンスペースで終わります。 2 つめの address が、1 つめの address で選択された行番号以下の 番号である場合、1 つめの address が指定する行のみ選択されます。 2 つめの address がコンテキストアドレスである場合、 sed は、 1 つめの address にマッチしたパターンスペースを 2 つめの address に再びマッチさせようとはしません。 sed は、選択された範囲の 次の行から、1 つめの address にマッチする行の検索を 再開します。
エクスクラメーション関数 ("amp;!") を用いることにより、address で選択されていない範囲に編集コマンドを適用させることもできます。
sed の正規表現には、デフォルト値の機能があります。 もし、正規表現が空、すなわち、区切りのみが指定されたなら、直前に用いられた正規表 現が用いられます。直前の正規表現とは、最後に使われた address または置換 コマンド中の正規表現です。最後とは実行時の順番であり、指定さ れたコマンドの並びとは異なります。たとえば、 "/abc/s//XXX/" はパターン "abc" を "XXX" で置換します。
text 引数のテキストは複数行に渡ることができます。改行の直前にバックスラッシュ を置くことで、テキストに改行を含めることができます。その他のバックスラッ シュは取り除かれ、直後の文字がリテラルに解釈されます。
"r" と "w" 関数は、オプショナルなファイル名引数をとります。ファイル名は、 関数名のあとに空白を置いてから指定する必要があります。引数として指定され たファイルは、入力ファイルの処理を開始する前に作成(または、内容を消去)し ます。
"b", "r", "s", "t", "w", "y", "amp;!", "amp;:" 関数は、オプショナルな引数をとることが できます。以下の一覧に、どの引数が関数名のあとに空白を置いてから指定し なければならないかが記述してあります。
2つの関数は引数として関数リストをとります。関数リストは、以下の形式の 改行で区切られた sed 関数の羅列です。
{ function function ... function }
"{" の前後に空白を置くことができます。関数の前に空白を置くことができま す。最後の "}" は、改行の直後に置く必要があります。 "}" の直前に空白を置 くこともできます。
[2addr] function-list | |
選択されたパターンスペースに関数リストを適用します。
| |
[1addr]a\
text | |
次の入力行を読み込む直前に
text
を標準出力に書き出します。
これは
"N"
関数によって実行される場合でも新しい繰り返しの開始時であっても変わりません。
| |
[2addr]b[label] | |
指定された label を持つ
"amp;:"
関数に分岐します。label が指定さ
れていない場合は、スクリプトの最後に分岐します。
| |
[2addr]c\
text | |
パターンスペースを削除します。address が指定されていない場合と、1つだけ
指定された場合は
text
が標準出力に書き出されます。2つの address が
指定された場合は、選択された範囲の最終行を処理した後に、text が標準出力に書き出されま
す。
| |
[2addr]d | |
パターンスペースを削除し、次の繰り返しを開始します。
| |
[2addr]D | |
パターンスペースの最初の改行までの部分を削除し、次の繰り返しを開始します。
| |
[2addr]g | |
ホールドスペースの内容をパターンスペースにコピーします。
| |
[2addr]G | |
改行文字とホールドスペースの内容をパターンスペースに追加します。
| |
[2addr]h | |
パターンスペースの内容をホールドスペースにコピーします。
| |
[2addr]H | |
改行文字とパターンスペースの内容をホールドスペースに追加します。
| |
[1addr]i\
text | |
標準出力に
text
を書き出します。
| |
[2addr]l | |
パターンスペースの内容を読めるような以下の形式で出力します。
| |
backslash | \\ |
alert | \a |
form-feed | \f |
carriage-return | \r |
tab | \t |
vertical tab | \v |
印字不可能な文字は、各バイトごとに "\" に続いて 3 桁の 8 進数で出力されま す (Most Significant Byte が先頭です)。 長い行は折り返して表示されます。折り返した部分は "\" に続く改行で 示されます。各行の最後には "$" が出力されます。
[2addr]n |
もし、(
|
[2addr]N |
パターンスペースに、次の入力行を追加します。このとき、元の内容との
間に改行を埋め込みます。現在の行番号が変化することに注意してください。
|
[2addr]p |
パターンスペースの内容を標準出力に書き出します。
|
[2addr]P |
パターンスペースの最初の改行までの内容を標準出力に書き出します。
|
[1addr]q |
スクリプトの残りをスキップし、次の繰り返しを開始せずに終了します。
|
[1addr]r file |
次の入力行を読み込む直前に、ファイル
file
の内容を標準出力に書き出します。
file
が何らかの理由で読み込むことができないなら、
それはだまって無視され、エラー条件は設定されません。
|
[2addr]s/regular expression/replacement/flags | |
パターンスペース内で、 regular expression に対応する最初の部分を replacement で
置換します。バックスラッシュと改行以外の文字をスラッシュのかわりに用
いることができます。regular expression と replacement の中に、リテラルな区切り文
字を置きたいときは、
"\"
に続けて区切り文字を置きます。
replacement 中のアンパサンド ("&") は、regular expression にマッチした文 字列に置換されます。 "&" の前に "\" を置くことで、この特殊な "&" の解釈を禁止 することができます。 "\#" ( "#" は数字)は、regular expression の 後方参照(back reference)表現にマッチするテキストに置換されます( re_format(7) 参照)。 replacement に改行を含めることで、入力行を分割することができます。 改行の直前に "\" を置くことで、replacement 中に改行を含めることができ ます。 s 関数の flags には、以下のものを0個以上指定できます。 | |
N | パターンスペースで N 回目にマッチした regular expression のみを置換します。 |
g | 先頭だけではなく、重なりあわない全てのマッチした内容を replacementで置換します。 |
p | 置換が行われたら、パターンスペースの内容を標準出力に書き出します。 もし、置換後の内容が置換前のものと同一でも置換が行われたとみなします。 |
w file | もし置換が行われたなら、パターンスペースの内容をファイル file に追加します。 もし、置換後の内容が置換前のものと同一でも置換が行われたとみなします。 |
[2addr]t [label] | |
入力行が読み込まれてから、あるいは
"t"
関数が実行されてから、置換が
行われていれば、指定した label を持つ
"amp;:"
コマンドへ分岐します。label が指
定されていない場合は、スクリプトの最後に分岐します。
| |
[2addr]w file | |
パターンスペースの内容をファイル
file
に追加します。
| |
[2addr]x | |
パターンスペースとホールドスペースの内容を交換します。
| |
[2addr]y/string1/string2/ | |
string1
に現れるパターンスペース中の文字を
string2
の対応した
文字に置換します。たとえば、`y/abc/ABC/' はパターンスペース中の文字
a、b、c を大文字に置換します。
`\' と改行以外のすべての文字を区切りとし
て用いることができます。
string1
、
string2
中では、`\' 直後に改行以外の文字が続く場合はリテラルに解釈され、
`\n' は改行と解釈されます。
| |
[2addr]!function
[2addr]!function-list | |
関数または関数リストを、 address で選択されていない行に適用します。
| |
[0addr]:label | |
この関数は何も行いません。
"b"
、
"t"
で用いるラベルを生成します。
| |
[1addr]= | |
行番号と改行を標準出力に書き出します。
| |
[0addr] | |
空行は無視されます。
| |
[0addr]# | |
"#"
とそれ以降の文字は無視されます(コメントとして扱われます)。
ただし、ファイルの行頭の 2
文字が
"#n"
の場合、デフォルトの出力が禁止されます。
これは、コマンドラインに
| |
SED (1) | July 17, 2004 |
総合手引 | セクション 1 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.