コマンドラインオプションとsedのコマンドまとめ

スポンサーリンク

ここでは、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]
ファイルの直接編集とバックアップの作成
--posixGNU拡張の無効化
-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行の削除
DPSから改行まで削除し、次の行を読み込まずに次のサイクルへ移行
gPS<-HS 内容の置換
GPS<-HS 内容の追加
hPS->HS 内容の置換
HPS->HS 内容の追加
i\
text
テキストの挿入
lエスケープ文字等を明確にし表示
n-nオプション未使用時、PSの内容を出力し、PSを次の行へ置換
NPSの内容に次の行を読み込んで追加、行番号も変更
pPSの内容を標準出力
PPSの内容を改行まで標準出力
qスクリプトの終了
r rfilerfileの内容を標準出力 読み取れない場合は空ファイルとして扱う
s/BRE/replacement/flagsBREのパターンに一致した場合、replacementに置換
t [label]sコマンドの置換成功時に:labelへジャンプ
w wfilePSの内容をwfileへ追記
xPS<=>HS 内容の入れ替え
y/string1/string2/文字の置換(trコマンドに近い機能)
:label分岐の際のラベル
=現在の行番号を標準出力
#コメント ただし、スクリプトの最初が'#n'の場合、-nオプションの機能が有効化
{command;command;...}コマンドのグループ化

GNU拡張

コマンド説明
a text行の後にtextを追加
i textテキストの挿入
c text行をtextに変更
ePSの内容でコマンドを実行 出力はPSへ置換
e commandcommandを実行し標準出力へ出力
F現在の入力ファイルのファイル名を標準出力へ出力
q[exit-code]スクリプトの終了
Q[exit-code]PSの内容を出力せずにスクリプトの終了
R filename行の後にfilenameの行を出力するようにスケジューリング
T labelsコマンドの置換失敗時に:labelへジャンプ
v [version]何もしない。
ただし、GNU sedが要求したバージョンを利用できなかったり、
GNU sedではない場合はsedの実行が失敗
zパターンスペースの内容を空にする