2013-04-16 65 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