查找并附加一个文本块

时间:2013-08-10 10:39:08

标签: bash sed

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

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

[...]
    zone "." IN {
        type hint;
        file "named.ca";
    };
[...]

我想在找到上面的文字之后将以下文字附加到同一个文件

zone    "$variable" {
    type master;
    file "$variable.fwd";
    allow-update { none; };
};

注意点,“”,“}这样的特殊字符和变量的存在。这种特征的存在使我感到痛苦 任何人都可以告诉我如何使用heredoc实现这一目标 问候

1 个答案:

答案 0 :(得分:1)

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

有关说明,请参阅Multi-line sed search and replace