Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从区域文件中提取IP和指针记录_Regex_Bash_Dns_Sed_Awk - Fatal编程技术网

Regex 从区域文件中提取IP和指针记录

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

我正在读取一个文件,该文件是我导出为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.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