http://www.perlmonks.org?node_id=764253


in reply to Multi line matching

So you have:

2345 IP NAME.com STATUS IPADDRESS1 2345/3213 IP NAME-interfce2.com STATUS IPADDRESS1
Which you say have the same "ip address".

Okay, so what do you want to do with them?
Do you want to keep one line and throw the other line away?
If so, which one do you want to keep, and why? What are the rules to this game?

If you are indeed wanting to remove "duplicates", then a hash is almost certainly what you need.

Update: I'll take a punt and guess that you want to remove those lines that describe hosts, but not interfaces. If that's the case, then it could be as simple as:

#!/usr/bin/perl use strict; use warnings; while (<DATA>) { next if /^\d{4}\s/; # A million ways to do this, but it depends wh +at the rest of your data looks like print; } __DATA__ 2345 IP NAME.com STATUS IPADDRESS1 2345/1243 IP Name-interface.com STATUS IPADDRESS2 2345/3213 IP NAME-interfce2.com STATUS IPADDRESS1 2345/1212 IP Name-interface3.com STATUS IPADDRESS3 4321 IP CNAME.com STATUS IPADDRESS_1 4321/1643 IP CName-interface.com STATUS IPADDRESS_1 4321/3673 IP CNAME-interfce2.com STATUS IPADDRESS_2
Which would give you:
2345/1243 IP Name-interface.com STATUS IPADDRESS2 2345/3213 IP NAME-interfce2.com STATUS IPADDRESS1 2345/1212 IP Name-interface3.com STATUS IPADDRESS3 4321/1643 IP CName-interface.com STATUS IPADDRESS_1 4321/3673 IP CNAME-interfce2.com STATUS IPADDRESS_2
Is that what you are looking for?

Cheers,
Darren