我想找到一个文本块,然后用sed将其附加到另一个文本块。由于文本的性质,我无法找到正确的sed命令。
假设我有一个包含此文本的文件
[...]
zone "." IN {
type hint;
file "named.ca";
};
[...]
我想在找到上面的文字之后将以下文字附加到同一个文件
zone "$variable" {
type master;
file "$variable.fwd";
allow-update { none; };
};
注意点,“”,“}这样的特殊字符和变量的存在。这种特征的存在使我感到痛苦 任何人都可以告诉我如何使用heredoc实现这一目标 问候
答案 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。