ここでは、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 | パターンスペースの内容を空にする |