2

我有以下配置的绑定配置文件:

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文件名开始和结尾)?};

4

2 回答 2

7

您可以使用sed删除给定区域的配置:

sed '/^zone "domain4.com" {$/,/^};/d' file

如果您想要一个可以将区域作为参数的脚本,只需添加 she-bang 和参数:

#!/bin/bash
sed '/^zone "'"$1"'" {$/,/^};/d' file
于 2012-07-31T10:52:39.563 回答
1

如果文件有序,您可以使用awk自动记录和字段分离:

awk '
  BEGIN { RS = ORS = "\n\n"; FS="\n" } 
  $1 !~ /domain3/
' file

删除第一行包含“domain3”的区域。

于 2012-07-31T12:00:49.603 回答