ファイル1の内容:
1111
2222
3333
4444
ファイル2の内容:
[webservers]
[databases]
file2の内容を次のように作成したいと思います。すべての行を追加したら、新しい行を挿入します。
[webservers]
1111
2222
3333
4444
[databases]
答え1
パターンの後にファイルを追加するにはr
eadコマンドを使用し、改行を挿入するには代替コマンドを使用します。sed
s
sed -e '/\[webservers]/r file1' -e 's/\[databases]/\
&/' file2
上記のように、改行文字を代替パターンに含めるには、バックスラッシュを使用してエスケープする必要があります(一致全体を表す&
ため、一致は改行文字の前にそれ自体で置き換えられます)。
[
特別な意味を抑制するにはエスケープが必要です。
答え2
拡張正規表現モードを備えたGNU sed。
追加するファイルに末尾の改行文字を追加するには、ここでSedコマンド "a"を使用することもできます。
sed -E \
-e '/\[webservers]/r file1' \
-e '/\[databases\]/r file3' \
-e '/\[webservers]|\[databases]/a\
' \
file2 >hosts