【发布时间】:2014-11-27 19:17:12
【问题描述】:
在添加和删除区域引用时,我正在使用 ShellScript 编辑我的绑定 dns 配置文件。 然后在“master.conf”文件中我们有这个内容:
...
...
zone "mydomain.com" {
type master;
file "/var/zones/m/mydomain.com"
};
...
...
我想使用“sed”将此条目“删除”到“mydomain.com”,但我无法为此编写正确的正则表达式。表达式必须使用可变域名并搜索到下一个右括号和分号,如下所示:
DOMAIN_NAME="mydomain.com"
sed -i.bak -r 's/^zone "'$DOMAIN_NAME'" \{(.*)\};$//g' /var/zones/master.conf
看到我们应该忽略括号之间的内容,并且这个块必须替换为“nothing”。 我尝试了这个表达式的一些变体,但没有成功。
【问题讨论】:
-
相当危险的正则表达式,因为
(.*)会吸收所有内容,直到文件中的LAST}。您可能会破坏文件中的所有区域。 -
@将其仅标记到下一个右括号。我已经从问题中更改了文本。感谢您的留言。