2010-07-11 11 views
5

मैं केवल एक टेक्स्ट फ़ाइल से आईपी पते कैसे निकालूं जिसमें प्रति पंक्ति आईपी पता है? मैं आईपी निकालना चाहता हूं और फिर आईपी पते को एक अलग फाइल में सूचीबद्ध करना चाहता हूं। पाठ फ़ाइल आईपी शामिल निम्न स्वरूप में हैं:पर्ल का उपयोग कर एक टेक्स्ट फ़ाइल से आईपी पते निकालने के लिए कैसे?

होस्ट somehost.com (192.168.1.1) ऊपर है (0.20s प्रतीक्षा अवधि)।
होस्ट 10.1.0.0 ऊपर है (0.21 विलंबता)।
होस्ट 172.1.0.0 ऊपर है (0.21 विलंबता)।


मैं इस प्रकार उत्पादन के परिणामस्वरूप पाठ फ़ाइल पाने के लिए कोशिश कर रहा हूँ:

192.168.1.1
10.1.0.0
172.1.0.0

सबसे अच्छा तरीका क्या है पर्ल का उपयोग करके ऐसा करने के लिए?

नोट: यह एक नियमित अभिव्यक्ति है कि वैध आईपी के लिए खाते में ... ऊपर प्रारूप क्या करेंगे में सिर्फ आईपी आवश्यकता नहीं है।

धन्यवाद!

उत्तर

15
use Regexp::Common qw/net/; 
while (<>) { 
    print $1, "\n" if /($RE{net}{IPv4})/; 
} 
1

while(<>) 
{ 
    print "$1\n" if /\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/; 
} 
+2

कि चीजें हैं जो मान्य IP पते नहीं हैं के सभी प्रकार से मेल खाएगी। Regexp :: सामान्य :: नेट बहुत बेहतर है। http://search.cpan.org/~abigail/Regexp-Common/lib/Regexp/Common/net.pm – friedo

+2

ओपी विशेष रूप से कहा कि वह परवाह नहीं की कि क्या वे वैध आई पी पते थे। "सभी प्रकार की चीजों" का क्या अर्थ है? यह डॉट-पृथक अंकों के 4 सेट से मेल खाता है, जो मुझे लगता है कि वह जो खोज रहा था उसके बारे में एक उचित विशेषता है। –

+6

यदि आईपी पता लाइन के आरंभ या अंत में है तो यह काम नहीं करेगा। –

संबंधित मुद्दे