我有以下配置的bind config文件:
zone "domain1.com" {
type master;
file "masters/domain1.com";
allow-transfer {
dnscontroller_acl;
};
};
zone "domain2.com" {
type master;
file "masters/domain2.com";
allow-transfer {
dnscontroller_acl;
};
};
zone "domain3.com" {
type master;
file "masters/domain3.com";
allow-transfer {
dnscontroller_acl;
};
};
zone "domain4.com" {
type master;
file "masters/domain4.com";
allow-transfer {
dnscontroller_acl;
};
};
如何在bash的帮助下从文件中删除区域配置(从zone
文件名和};
的结尾开始)?
答案 0 :(得分:7)
您可以使用sed
删除给定区域的配置:
sed '/^zone "domain4.com" {$/,/^};/d' file
如果你想要一个可以将区域作为参数的脚本,只需添加she-bang和参数:
#!/bin/bash
sed '/^zone "'"$1"'" {$/,/^};/d' file
答案 1 :(得分:1)
如果文件排序良好,您可以使用awk
进行自动记录和字段分离:
awk '
BEGIN { RS = ORS = "\n\n"; FS="\n" }
$1 !~ /domain3/
' file
删除第一行包含“domain3”的区域。