Regex 从区域文件中提取IP和指针记录
我正在读取一个文件,该文件是我导出为txt文件的AXFR文件的一部分。基本上,我是Regex 从区域文件中提取IP和指针记录,regex,bash,dns,sed,awk,Regex,Bash,Dns,Sed,Awk,我正在读取一个文件,该文件是我导出为txt文件的AXFR文件的一部分。基本上,我是cat出文件,只grep出PTR记录(我现在只对这些记录感兴趣)。我尝试过使用awk,但我对awk的总体知识有限,还没有计划广泛地学习它。以下是文件类型的外观: 1.0.0.10.in-addr.arpa. 1800 IN PTR name-1.something.something.else. 2.0.0.10.in-addr.arpa. 1800 IN PTR name-2.something.some
cat
出文件,只grep出PTR
记录(我现在只对这些记录感兴趣)。我尝试过使用awk
,但我对awk的总体知识有限,还没有计划广泛地学习它。以下是文件类型的外观:
1.0.0.10.in-addr.arpa. 1800 IN PTR name-1.something.something.else.
2.0.0.10.in-addr.arpa. 1800 IN PTR name-2.something.something.else.
3.0.0.10.in-addr.arpa. 1800 IN PTR name-3.something.something.else.
4.0.0.10.in-addr.arpa. 1800 IN PTR name-4.something.something.else.
5.0.0.10.in-addr.arpa. 1800 IN PTR name-5.something.something.else.
我需要输出的是IP地址(需要反转)、PTR,然后是它指向的实际记录,因此上面的输出看起来像:
10.0.0.1 PTR name-1.something.something.else.
10.0.0.2 PTR name-1.something.something.else.
10.0.0.3 PTR name-1.something.something.else.
10.0.0.4 PTR name-1.something.something.else.
10.0.0.5 PTR name-1.something.something.else.
这是我可以用awk做的事情吗?如果是,怎么做?我在让它工作时遇到了麻烦,我在逻辑上如何让它工作方面处于停滞状态。您不需要使用
cat
或grep
,因为awk
可以读取文件并进行模式匹配
awk '/PTR/ { split($0, ip, /\./);
printf("%s.%s.%s.%s\tPTR\t%s\n", ip[4], ip[3], ip[2], ip[1], $NF);
}' filename
…|perl-ne'
而()
{
我的($ip,$record)=(拆分(/\s+/)[0,4];
$ip=~s/\Q.in-addr.arpa。\E$/;
my@tks=拆分(/\./,$ip);
打印联接(“.”,反向(@tks)),“PTR$record\n”;
}
'
仅限sed:
sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).\([0-9]*\).*\(PTR\)/\4.\3.\2.\1\t\5\t/' file
sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\).\([0-9]*\).*\(PTR\)/\4.\3.\2.\1\t\5\t/' file