Next: , Previous: The "s" Command, Up: sed Programs


3.6 あまり使用されないコマンド

前のセクションのものより使用されることはおそらく少ないでしょうが,非常 にわずかな有用なsedスクリプトには,以下のコマンドを組み込むこ とも可能です.

y/source-chars/dest-chars/
(/文字は,yコマンドで与えられるその他の単一文字で一律に置 換してもかまいません.)

source-charsにマッチしたパターン空間のすべての文字を,対応する dest-charsの文字に変換します.

/(またはそのかわりに使用されている文字),\,または改行の インスタンスは,それぞれのインスタンスに\でエスケープを提供する ことでsource-charsdest-charsのリストに書くことが可能です. source-charsdest-charsのリストには,(エスケープを取り除く と)同じ数の文字を含める必要があります

a\
text
GNUの拡張として,このコマンドは二つのアドレスを受け入れます.

このコマンドに続いているテキストの行(最後が\で終っているものは, 出力から取り除かれます)を,現在のサイクルの終りや,次の入力行が読み込ま れるときに出力されるキューに保存します.

textのエスケープシーケンスは処理されるので,単一のバックスラッシュ を出力するため,text\\を使用してください.

GNUの拡張として,aと改行の間に連続した空白と\が ある場合,aの後に最初の空白文字以外で始まるこの行のテキストは, textブロックの最初の行として受けとられます.(これで,単純に一行の スクリプトを追加するだけで可能になります.)この拡張は,icコマンドを用いても動作します.

i\
text
GNUの拡張として,このコマンドは二つのアドレスを受け入れます.

このコマンドに続いている行(最後が\で終っているものは,出力から取 り除かれます)をすぐに出力します.

c\
text
マッチしたアドレスやアドレスの範囲の行を削除し,このコマンドに続いてい る行(最後が\で終っているものは,出力から取り除かれます)を,最後 の行の位置(または,アドレスが指定されていない場合はそれぞれの行の位置) に出力します.新しいサイクルは,パターン空間が削除されてから,このコマ ンド終了後に開始されます.
=
GNUの拡張として,このコマンドは二つのアドレスを受け入れます.

現在の入力行の行数を(改行を追加して)出力します.

l n
明確な様式でパターン空間を出力します.出力不可能な文字(と\文字) は,Cの形式でエスケープされた様式で出力されます.長い行は分割を示す \を後置して分割されます.それぞれの行の終りには$で印が付 きます.

nは,要求される行を丸める長さを指定します.0(ゼロ)の長さは長い行 を丸めないことを意味します.省略されている場合,コマンドラインで指定さ れているものがデフォルトとして使用されます.nパラメータは GNU sedの拡張です.

r filename
GNUの拡張として,このコマンドは二つのアドレスを受け入れます.

filenameの内容を読み込み,現在のサイクルの終りや次の入力行が読み 込まれたときに出力ストリームに挿入するためキューに保存します. filenameが読み込み不可能な場合,エラーを示すことなく空のファイル が読み込まれているかのように扱われることに注意してください.

GNU sedの拡張として,特殊な値/dev/stdinがファイル名としてサ ポートされていて,それは標準入力の内容を読み込みます.

w filename
パターン空間をfilenameに書き出します.GNU sedの拡張として, file-nameとして二つの特殊な値がサポートされています. /dev/stderrは結果を標準エラー出力に書き出し,/dev/stdout は標準出力に書き出します.1

最初の入力行が読み込まれる前に,ファイルは作成され(または切り詰められ) ます.同じfilenameを参照するすべてのwコマンドは(sコ マンド成功時のwフラグのインスタンスを含めて),ファイルを閉じ再び 開くこと無く出力されます.

D
パターン空間のテキストを最初の改行まで削除します.テキストが残っている 場合,(入力の新しい行を読み込むことなく)結果として生じているパターンス ペースでサイクルを再び開始し,それ以外では通常通り新しいサイクルを開始 します.
N
パターン空間に改行を追加し,入力の次の行をパターン空間に後置します.入 力がそれ以上ない場合,sedは終了し,それ以上のコマンドを処理し ません.
P
パターン空間の位置を最初の改行まで出力します.
h
ホールド空間の内容をパターン空間の内容で置換します.
H
ホールド空間の内容に改行を後置した後,パターン空間の内容をホールド空間 に後置します.
g
パターン空間の内容をホールド空間の内容で置換します.
G
パターン空間の内容に改行を後置した後,ホールド空間の内容をパターン空間 に後置します.
x
ホールド空間とパターン空間の内容を入れ換えます.

Footnotes

[1] -iスイッチが使用されていない 限り,これはpと等価です.