in reply to Multi line matching
It may consume a good bit of memory, but why worry about it until you *know* that it's a problem? If you know it is, then put the data in a database and let it do the heavy lifting for you. And just because I'm bored:
#!/usr/bin/perl -w use strict; use warnings; my %IPs; while(<DATA>) { if (m#^(\d+)([\s\d/]+)IP\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)#) { push @{$IPs{$1}}, sprintf("%-10s %-24s %s", $1 . $2, $3, $4); } } print "KEY \tIP NAME STATUS\n" . "------\t---------- ------------------------ --------------\n"; for my $IP (sort keys %IPs) { print sprintf("%-6s\t",$IP), join("\n\t", sort @{$IPs{$IP}}), "\n"; } __DATA__ 2345 IP NAME.com online IPADDRESS1 2345/1243 IP Name-interface.com inactive IPADDRESS2 2345/3213 IP NAME-interfce2.com online IPADDRESS1 2345/1212 IP Name-interface3.com online IPADDRESS3 4321 IP CNAME.com dead IPADDRESS_1 4321/1643 IP CName-interface.com online IPADDRESS_1 4321/3673 IP CNAME-interfce2.com online IPADDRESS_2
gives us
...roboticusKEY IP NAME STATUS ------ ---------- ------------------------ -------------- 2345 2345 NAME.com online 2345/1212 Name-interface3.com online 2345/1243 Name-interface.com inactive 2345/3213 NAME-interfce2.com online 4321 4321 CNAME.com dead 4321/1643 CName-interface.com online 4321/3673 CNAME-interfce2.com online
|
|---|