aoma blog

エンジニアの日常とか技術とか

sedコマンドで行単位に処理するオプションの挙動メモ

この記事は移転しました。約5秒後に新記事へ移動します。
移動しない場合はココをクリックして新サイトをお楽しみください。

行追加

特定の行の前に挿入するiオプション(insert)

aaa
ccc
eee

ccc行の前に挿入する

sed -i "/ccc/i bbb" test.txt

aaa
bbb
ccc
eee

部分一致でも行単位で処理される

sed -i "/c/i bbb" test.txt

aaa
bbb
bbb
ccc
eee

一致する行すべて処理される

sed -i "/b/i x" test.txt

aaa
x
bbb
x
bbb
ccc
eee

特定の行の後ろに追加するaオプション(append)

aaa
ccc
eee

ccc行の後ろに追加する

sed -i "/ccc/a ddd" test.txt

aaa
ccc
ddd
eee

部分一致でも行単位で処理される

sed -i "/c/a ddd" test.txt

aaa
ccc
ddd
ddd
eee

一致する行すべて処理される

sed -i "/d/a x" test.txt

aaa
ccc
ddd
x
ddd
x
eee

特定の行を置換するcオプション(change?)

aaa
ccc
eee

ccc行を置換する

sed -i "/ccc/c xxx" test.txt

aaa
xxx
eee

部分一致でも行単位で処理される

sed -i "/e/c xxx" test.txt

aaa
xxx
xxx

一致する行すべて処理される

sed -i "/x/c z" test.txt

aaa
z
z

おまけ

sedで文字列置換

sed -i "s/a/A/" test.txt

Aaa
z
z

これはgオプション(grep?)で一致する文字列すべてになる

sed -i "s/a/A/g" test.txt

AAA
z
z

さらにおまけ

上記すべてに付いてた-iオプション(--in-place)はファイルを上書き保存する。

おしまい。