aoma blog

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

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

行追加

特定の行の前に挿入する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)はファイルを上書き保存する。

おしまい。