in reply to Re^3: Extracting IP address from large text file.
in thread Extracting IP address from large text file.
In 'ATTEMPT 2', I think you are missing the closing } (right-curly-bracket) of the if block (should be just after the print statement). With this closing curly, the code works for me – see first example below. BWT: Use the [download] link to download whatever is posted within <code> ... </code> or <c> ... </c> tags without inclusion of line-wrap flags!
As for extracting individual digit fields from each extracted IP address, I think a two-step process would be best: see second example below.
In general, see perlre, perlrequick, perlreref, perlretut,
>perl -wMstrict -le "my $str = 'foo 94.198.240.132:60988 bar 174.142.24.201:3128 baz'; if (my @matches = $str =~ m{ ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0- +9]{1,3}:[0-9]{1,5}) }xmsg) { print qq{matched @matches}; } ;; if (my @ips = $str =~ m{ \d{1,3} (?: \. \d{1,3}){3} : \d{1,5} }xmsg) +{ for my $ip (@ips) { my ($p1, $p2, $p3, $p4, $p5) = $ip =~ m{ \d+ }xmsg; print qq{'$ip': '$p1' '$p2' '$p3' '$p4' '$p5'} } } " matched 94.198.240.132:60988 174.142.24.201:3128 '94.198.240.132:60988': '94' '198' '240' '132' '60988' '174.142.24.201:3128': '174' '142' '24' '201' '3128'
|
|---|