sed [オプション] 'アドレス コマンド'
オプション部分 | sed処理全体のオプション設定を指定 | |
アドレスコマンド部分 | ;区切りにすることで複数個記載可能 | |
アドレス部分 | コマンドを実行する対象を絞り込む条件のイメージ | |
コマンド部分 | 置換等の具体的処理を記述するイメージ |
e | fオプションが無い場合、省略可能。複数個条件を指定する場合等に記載 |
f | パターンを記載したファイルを指定。パターンが複数個有る場合に-eオプションを羅列せずに済む |
n | sedによる置換結果を出力させない。 nオプションをつけない場合、sedは以下を繰り返すような出力結果となる(※)。 ・1行読み込み、コマンド部分内にpがあれば表示。 ・1行分のコマンド処理結果を表示 |
i | ファイル名を指定することで上書き保存 |
c | ファイル名を上書きするのでなく、コピーを作成する |
r,E | 拡張正規表現を使用する |
$ sed 's/aaa/ddd/p' /*A.txt*/ => /*A.txtの置換後*/ aaa ddd bbb bbb ccc ccc /*出力結果*/ ddd <-/aaa/の部分がひっかかった時のpが呼び出された ddd <-nオプションをつけてないので、A.txtの置換後を表示 bbb <-同上 ccc <-同上
数値A | A行目 |
数値A,数値B | A行目〜B行目 |
数値A,数値B! | A行目〜B行目以外 |
/正規表現A/ | 正規表現Aが合致する行 |
/正規表現A/,/正規表現B/ | 正規表現Aが合致する行〜正規表現Bが合致する行 |
記載なし | 全行 |
a | aの後ろのテキストをアドレス部分の後ろに追加する | |
i | iの後ろのテキストをアドレス部分に挿入する | |
p | 表示する | |
d | 表示しない | |
s | s/置換前文字列/置換後文字列/flag | 置換処理を行うコマンド |
flagがgの場合 | 1行の中に置換前文字列を複数見つけた場合も全て置換処理する | |
flagが数値の場合 | 1行の中の数値番目の要素に対して処理する | |
flagがpの場合 | 置換し終わった物を表示 | |
flagがwの場合 | 別ファイルに書き出す | |
置換前文字列を括弧で囲った場合。 /¥(正規表現¥)/&です/ |
¥(¥)で囲った正規表現を後方参照取得する。後方参照に入る値は&,¥1,¥2 | |
s_置換前文字列_置換後文字列_flag | sの1個後ろの文字が区切り文字となる。「http://」等、/を含む文字列を置換したい場合は別の記号等を置換前後の文字列の区切り文字とすると良い。 | |
N | 1行分追加の先読みを行う。複数行まとめて処理したい場合に使う。 | |
b ラベル名 | ラベル名: で指定した位置までジャンプさせる。コマンド処理をループさせたい場合等に役立つ | |
t ラベル名 | sコマンドが成功したらジャンプ | |
T ラベル名 | sコマンドが失敗したらジャンプ | |
c | c\文字 | 行まるごとの置換を行う |
y | y/文字/文字/ | 文字単位での置換を行う。trコマンドの方が使い勝手が良いので使用頻度は低め |
q | 終了 |
sed -n '/対象文字/p'
sed '/対象文字/d'
sed 'p;s/置換前/置換後/'
sed -n 's/置換前/置換後/p' または sed 's/置換前/置換後'
sed "3,5s/置換前文字列/置換後文字列/g"
sed "/特定文字/s/置換前文字列/置換後文字列/g"
sed -n '/開始行の正規表現/,/終了行の正規表現/p'|
2行ごとに4番目の置換対象文字列を置き換える場合 sed -e "N;s/置換前文字列/置換後文字列/4"