Bash 查找一个文本块并附加另一个文本块

Bash 查找一个文本块并附加另一个文本块,bash,sed,Bash,Sed,我想找到一个文本块,然后用另一个带有sed的文本块将其追加。由于文本的性质,我找不到正确的sed命令 假设我有一个包含此文本的文件 [...] zone "." IN { type hint; file "named.ca"; }; [...] 在找到上面的文本后,我想将以下文本附加到同一个文件中 zone "$variable" { type master; file "$variable.fwd"; allow-

我想找到一个文本块,然后用另一个带有sed的文本块将其追加。由于文本的性质,我找不到正确的sed命令

假设我有一个包含此文本的文件

[...]
    zone "." IN {
        type hint;
        file "named.ca";
    };
[...]
在找到上面的文本后,我想将以下文本附加到同一个文件中

zone    "$variable" {
    type master;
    file "$variable.fwd";
    allow-update { none; };
};
注意特殊字符,如点“,{}和变量的存在。这种字符的存在使我感到痛苦 有人能告诉我如何使用heredoc实现这一点吗
问候

在这里,一个heredoc不会有多大帮助

sed -ni '1h;1!H;${g;s/    zone "." IN {\
        type hint;\
        file "named.ca";\
    };\
/&zone    "$variable" {\
    type master;\
    file "$variable.fwd";\
    allow-update { none; };\
};\
/;p}' file

有关解释,请参见。

您所说的站点的以下文本是什么意思??请检查我的编辑。[..]表示该文件还包含其他数据