gnu-sedで特定文字列行の上にテキストを挿入する


動機

設定ファイルを自動スクリプトで弄りたい時に困ったのでメモ
sedのeコマンドの情報ってほとんど見つからなかったし、意外と便利そうなので
eコマンドがgnu拡張らしいので、Macだと普通は動かない?かも

やり方

置換対象のファイル

$ cat << EOF > hoge.txt
1
2
specific text
3
4
EOF

挿入したいテキスト

$ cat << EOF > add.txt
text1
text2
EOF

sedでspecific textの上にadd.txtを挿入する。
ここでeコマンドを使うのがミソ

$ sed -i '/specific text/e cat add.txt' hoge.txt

specific textの上にadd.txtの内容が入る

$ cat hoge.txt
1
2
text1
text2
specific text
3
4

その他