このページの内容

3.2 sedコマンド一覧

GNU sedは次のコマンドをサポートします。標準POSIXコマンドとGNU拡張の両方があります。各コマンドの詳細と例は、この後の節にあります。覚え方を括弧内に示します。

a\
text

行の後にtextを追加します。

a text

行の後にtextを追加します(別の構文)。

b label

labelへ無条件に分岐します。labelは省略でき、その場合は次のサイクルを開始します。

c\
text

行をtextに置き換えます(change)。

c text

行をtextに置き換えます(change、別の構文)。

d

パターンスペースを削除し、直ちに次のサイクルを開始します。

D

パターンスペースに改行が含まれていれば、最初の改行までのテキストを削除し、残ったパターンスペースを使ってサイクルを再開します。新しい入力行は読み込みません。

パターンスペースに改行が含まれていなければ、dコマンドを実行した場合と同じように、通常の新しいサイクルを開始します。

e

パターンスペースにあるコマンドを実行し、その出力でパターンスペースを置き換えます。末尾の改行は除去されます。

e command

commandを実行し、その出力を出力ストリームへ送ります。コマンドは複数行にまたがることができ、その場合は最後の行以外の各行をバックスラッシュで終えます。

F

(filename)現在の入力ファイル名を、末尾の改行とともに表示します。

g

パターンスペースの内容をホールドスペースの内容で置き換えます。

G

パターンスペースの内容に改行を追加し、その後にホールドスペースの内容を追加します。

h

(hold)ホールドスペースの内容をパターンスペースの内容で置き換えます。

H

ホールドスペースの内容に改行を追加し、その後にパターンスペースの内容を追加します。

i\
text

行の前にtextを挿入します。

i text

行の前にtextを挿入します(別の構文)。

l

パターンスペースを曖昧さのない形式で表示します。

n

(next)自動表示が無効になっていなければ、パターンスペースを表示します。その後、自動表示の設定にかかわらず、パターンスペースを次の入力行で置き換えます。入力がもうなければ、sedは残りのコマンドを処理せず終了します。

N

パターンスペースに改行を追加し、その後に次の入力行を追加します。入力がもうなければ、sedは残りのコマンドを処理せず終了します。

p

パターンスペースを表示します。

P

パターンスペースを、最初の<newline>まで表示します。

q[exit-code]

(quit)これ以上コマンドや入力を処理せず、sedを終了します。

Q[exit-code]

(quit)このコマンドはqと同じですが、パターンスペースの内容を表示しません。qと同様に、呼び出し元へ終了コードを返せます。

r filename

ファイルfilenameを読み込みます。

R filename

filenameの1行を読み込み待ちのキューに入れ、現在のサイクルの最後、または次の入力行を読み込むときに、出力ストリームへ挿入します。

s/regexp/replacement/[flags]

(substitute)パターンスペースの内容に正規表現を照合します。一致した場合は、一致した文字列をreplacementで置き換えます。

t label

(test)最後の入力行の読み込み、または条件付き分岐の実行以降に、sによる置換が成功している場合だけlabelへ分岐します。labelは省略でき、その場合は次のサイクルを開始します。

T label

(test)最後の入力行の読み込み、または条件付き分岐の実行以降に、sによる置換が成功していない場合だけlabelへ分岐します。labelは省略でき、その場合は次のサイクルを開始します。

v [version]

(version)このコマンドは何も行いませんが、GNU sed拡張がサポートされていない場合、または要求した版が利用できない場合に、sedを失敗させます。

w filename

パターンスペースをfilenameへ書き込みます。

W filename

パターンスペースの最初の改行までの部分を、指定したファイル名へ書き込みます。

x

ホールドスペースとパターンスペースの内容を交換します。

y/src/dst/

パターンスペースにある文字のうち、source-charsのいずれかに一致する文字を、対応するdest-charsの文字へ置き換えます。

z

(zap)このコマンドはパターンスペースの内容を空にします。

#

次の改行までのコメントです。

{ cmd ; cmd ... }

複数のコマンドを一つのグループにまとめます。

=

現在の入力行番号を、末尾の改行とともに表示します。

: label

分岐コマンド(b、t、T)が使うlabelの位置を指定します。