2010-07-11 4 views
5

Как извлечь только IP-адреса из текстового файла с IP-адресом в строке? Я хотел бы извлечь IP-адреса, а затем перечислить IP-адреса в отдельном файле. Текстовый файл, содержащий IP-адреса, имеет следующий формат:Как извлечь IP-адреса из текстового файла с помощью Perl?

Хост somehost.com (192.168.1.1) вверх (0,20 с).
Host 10.1.0.0 up (0.21s latency).
Host 172.1.0.0 up (0.21s latency).


Я пытаюсь получить результирующий текстовый файл для вывода следующим образом:

192.168.1.1
10.1.0.0
172.1.0.0

Что является лучшим способом сделать это с помощью Perl?

Примечание: для него не требуется регулярное выражение, на котором учитываются действительные IP-адреса ... только IP-адреса в вышеуказанном формате.

Спасибо!

ответ

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 :: Common :: net намного лучше. http://search.cpan.org/~abigail/Regexp-Common/lib/Regexp/Common/net.pm – friedo

+2

ОП конкретно сказал, что ему все равно, являются ли они действительными ip-адресами. Что означает «всевозможные вещи»? Это соответствует 4 наборам разделенных точками цифр, которые, как мне кажется, справедливо характеризуют то, что он искал. –

+6

Это не будет работать, если IP-адрес находится в начале или конце строки. – 2010-07-11 15:45:25

Смежные вопросы