我想通过一个shellcript替换我的named.conf文件中的转发器。原因是我有防火墙,必须在VirtualBox VM中使用我的localhost。
我这样做
forwarder="// forwarders {10.123.14.2;10.123.14.3;};"
forwarder1=" forwarders {10.123.14.2;10.123.14.3;};"
sed '/'"$forwarder"'/s/'"$forwarder"'/'"$forwarder1"'/'> /etc/named.conf
但是我收到语法错误。 谁能告诉我我做错了什么并提出解决方案?
答案 0 :(得分:1)
在sed
内,//
字符很特殊,因此您必须将它们转义。
对转发器字符串尝试类似的操作:forwarder="\/\/
...
答案 1 :(得分:1)
Sed可以使用几乎任何字符来分隔s / search / replace / strings,试试
sed "\@$forwarder@s@$forwarder@$forwarder1@" /etc/named.conf.old > /etc/named.conf
请注意,您的示例没有输入文件,如果您确实执行了上述行,则可能已将您的/etc/named.conf
现代seds支持-i
选项,该选项将读取并保存您的文件到位,即
sed -i "@......" file
我希望这会有所帮助。