2013-04-16 54 views
0

我试图从Microsoft区域中提取DNS PTR记录,以便我可以将它们导入到BIND区域。我把所有的挫折,他们是按以下格式:sed - 反向DNS提取

1.0.0.10.in-addr.arpa. 1200 IN PTR my.long.domain.net. 
22.0.0.10.in-addr.arpa. 1200 IN PTR your.long.domain.net. 
33.0.0.10.in-addr.arpa. 1200 IN PTR our.long.domain.net. 

我所试图做的是提取出初始八位位组(在这种情况下,1,22,和33出每一行 - 在开始),但是我想删除其他所有内容,一直到“PTR”项目。然后,我想保留“PTR”项目以及实际的反向(例如my.long.domain.net。所以,我的猜测是使用sed和我想要输出的结果(使用示例从上面),将是:?

1  PTR  my.long.domain.net. 
22  PTR  your.long.domain.net. 
33  PTR  our.long.domain.net. 

这是sed的东西可以做,我怎么会去这样做,我是迄今为止任何sed的专家在先进

感谢

回答

2

这可能会为你工作(GNU SED):

sed -r 's/\..*(\sPTR)/\1/' file 
+0

+1整洁快捷! – Kent

+0

完美地工作 - 而且非常容易阅读 – drewrockshard

0

!我认为这是你想要的:

sed 's/\s\{1,\}/ /g;s/\([^.]*\).*PTR /\1  PTR  /;s/^\(........\) */\1/' 

一些,这只是让你在需要的输出显示的距离,如果你想所有的人单倍行距领域,这将做到:

sed 's/\s\{1,\}/ /g;s/\([^.]*\).*PTR /\1 PTR /' 
+0

威廉 - 我想我发现一个问题与我的例子,这将有所帮助,因为你的解决方案没有工作(我认为是我的坏)。前。我向你展示了空格,而我的原始文件中有区域,有空格,实际上看起来像标签。有没有办法让您修改解决方案以查找标签,而不是空格? – drewrockshard

+0

被编辑用单个空格替换任何空格。如果您的sed版本不喜欢'\ s'作为空格字符,请尝试使用\ t作为制表符或POSIX类[[:space:]],否则您可能需要在类'[ ^我]'^我是控制 - 我(尝试输入控制-v,控制 - 我插入它,经常工作)。 – William