sed でファイル内の特定の文字を、改行を含む別の文字列に置き換えたい時のメモ。
追記
sed には a(append) コマンド、 i(insert) コマンドがあるようで、こちらでも可能でした。
コメントで教えて頂きました。ありがとうございます!
$ echo "hoge" | sed -e '/hoge/a fuga'
hoge
fuga
$ echo "hoge" | sed -e '/hoge/i fuga'
fuga
hoge
追記ここまで
hoge
の後に、fuga
を追加したい場合
$ echo "hoge" | sed -e 's@hoge@\0\nfuga@'
hoge
fuga
hoge
の前に、fuga
を追加したい場合
$ echo "hoge" | sed -e 's@hoge@fuga\n\0@'
fuga
hoge
hoge
の前に、fuga
とhogera
を追加したい場合
$ echo "hoge" | sed -e 's@hoge@fuga\nhogera\n\0@'
fuga
hogera
hoge
sed で改行を含む置換は面倒と散見されたけど、
この方法だと普通に \n
でいけるみたい。
文字中の ()[]
は \(\)\[\]
とエスケープが必要。
$ sed --version
GNU sed version 4.2.1