考虑绑定dns区域文件的格式:
zone "mydomain.com" {
type slave;
file "db.mydomain";
masters {
192.168.5.15;
};
};
...
对conf文件中的其他区域重复几次。
我需要在脚本中发现有关zone.conf文件的一些详细信息。
我知道我正在寻找的域名,因此我可以使用“^ zone”mydomain.com“'
等正则表达式但我需要发现在我正在查看的区域名称之后首先出现的文件行。
我还想在主列表中找到ip地址。
我们的配置只有一个主IP,所以我不必担心多个ip。
赞赏的想法。
答案 0 :(得分:1)
sed
可用于隔离dns文件的右侧部分,然后在模式匹配后打印下一行:
# sed -n '/"mydomain.com"/,/^};$/{/^zone "mydomain.com"/{n;p}}' dnsfile
type slave;
# sed -n '/"mydomain.com"/,/^};$/{/masters/{n;p}}' dnsfile
192.168.5.15;
答案 1 :(得分:0)
这里的一种方法是使用sed首先输出你感兴趣的区域块,然后只获取你想要的线条。这可能类似于以下内容:
sed -n '/^zone "mydomain.com"/,/^};/p' zone.conf | sed -n -e '2p' -e '/[0-9]/p'
2p
将仅打印第二行(区域名称后面的第一行),/[0-9]/p
将仅打印包含数字(ip地址)的行。
答案 2 :(得分:0)
要获得修剪IP的下一行:
awk -F';' '/^ *masters/ { getline; sub(/^ */, "", $1); print $0 }' file
192.168.5.15
获取区域线:
awk -F';' '/^zone "mydomain.com"/ { getline; sub(/^ */, "", $1); print $0}' file
192.168.5.15