ここでは、GNU sedでのsedのコマンドラインオプションとsedのスクリプトで利用できるコマンドをまとめています。
POSIXかGNU拡張かどうかもドキュメントを確認しながらまとめましたが、すべての動作確認までは行っていませんので、正しいかどうかは実際に利用して確認してください。
sedコマンドのコマンドラインオプション
-e,-f,-nはPOSIXにあります。
オプション | 説明 |
---|---|
-e script --expression=script | sedスクリプトの実行 |
-f scriptfile --file=scriptfile | scriptfileからsedスクリプトを実行 |
-n --quiet --silent | パターンスペースの自動出力の抑制 |
--debug | デバッグモード |
-i[SUFFIX] --in-place[=SUFFIX] | ファイルの直接編集とバックアップの作成 |
--posix | GNU拡張の無効化 |
-E -r --regexp-extended | EREの有効化 |
-s --separate | 入力ファイルを長いストリームではなく個別として扱う |
--sandbox | サンドボックスモード(e/r/wコマンドの無効化) |
-z --null-data | NUL文字で行を区切る |
--help | ヘルプメッセージの表示 |
--version | バージョン情報の表示 |
sedスクリプトのコマンド
sedスクリプトのコマンドには以下のものがあります。
以下の表ではPSはパターンスペースを、HSはホールドスペースを意味しています。
POSIX準拠
コマンド | 説明 |
---|---|
a\ text | 行の後にtextを追加 |
b [label] | :labelへジャンプ |
c\ text | 行をtextに変更 |
d | 行の削除 |
D | PSから改行まで削除し、次の行を読み込まずに次のサイクルへ移行 |
g | PS<-HS 内容の置換 |
G | PS<-HS 内容の追加 |
h | PS->HS 内容の置換 |
H | PS->HS 内容の追加 |
i\ text | テキストの挿入 |
l | エスケープ文字等を明確にし表示 |
n | -nオプション未使用時、PSの内容を出力し、PSを次の行へ置換 |
N | PSの内容に次の行を読み込んで追加、行番号も変更 |
p | PSの内容を標準出力 |
P | PSの内容を改行まで標準出力 |
q | スクリプトの終了 |
r rfile | rfileの内容を標準出力 読み取れない場合は空ファイルとして扱う |
s/BRE/replacement/flags | BREのパターンに一致した場合、replacementに置換 |
t [label] | sコマンドの置換成功時に:labelへジャンプ |
w wfile | PSの内容をwfileへ追記 |
x | PS<=>HS 内容の入れ替え |
y/string1/string2/ | 文字の置換(trコマンドに近い機能) |
:label | 分岐の際のラベル |
= | 現在の行番号を標準出力 |
# | コメント ただし、スクリプトの最初が'#n'の場合、-nオプションの機能が有効化 |
{command;command;...} | コマンドのグループ化 |
GNU拡張
コマンド | 説明 |
---|---|
a text | 行の後にtextを追加 |
i text | テキストの挿入 |
c text | 行をtextに変更 |
e | PSの内容でコマンドを実行 出力はPSへ置換 |
e command | commandを実行し標準出力へ出力 |
F | 現在の入力ファイルのファイル名を標準出力へ出力 |
q[exit-code] | スクリプトの終了 |
Q[exit-code] | PSの内容を出力せずにスクリプトの終了 |
R filename | 行の後にfilenameの行を出力するようにスケジューリング |
T label | sコマンドの置換失敗時に:labelへジャンプ |
v [version] | 何もしない。 ただし、GNU sedが要求したバージョンを利用できなかったり、 GNU sedではない場合はsedの実行が失敗 |
z | パターンスペースの内容を空にする |