#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Common qw(net);
use String::Util qw(trim);
while (<>) {
/$RE{net}{IPv4}{-keep}/ and printf "%s\n", trim($1);
/$RE{net}{IPv6}{-sep => ':'}{-style => 'HeX'}{-keep}/ and printf "%s\n", trim($1);
/$RE{net}{MAC}{-keep}/ and printf "%s\n", trim($1);
}
####
cat report.txt | ./ips.pl > ips.txt
####
192.168.1.188
fdba:7b43:1916::d34
fe80::ec78:4ff:fec0:a17b
192.168.1.1
fe80::eade:27ff:feb6:fa8c
192.168.1.1
fdba:7b43:1916::1
fdba:7b43:1916::d34
fdba:7b43:1916::d34
fdba:7b43:1916::d34
fdba:7b43:1916::d34
fdba:7b43:1916::d34
####
cat perlout.txt | sort | uniq
192.168.1.1
192.168.1.188
fdba:7b43:1916::1
fdba:7b43:1916::d34
fe80::eade:27ff:feb6:fa8c
fe80::ec78:4ff:fec0:a17b
cat perlout.txt | sort | uniq -u
192.168.1.188
fdba:7b43:1916::1
fe80::eade:27ff:feb6:fa8c
fe80::ec78:4ff:fec0:a17b
When pre-filter one more time with uniq, then they give same result
cat perlout.txt | sort | uniq | uniq
192.168.1.1
192.168.1.188
fdba:7b43:1916::1
fdba:7b43:1916::d34
fe80::eade:27ff:feb6:fa8c
fe80::ec78:4ff:fec0:a17b
cat perlout.txt | sort | uniq | uniq -u
192.168.1.1
192.168.1.188
fdba:7b43:1916::1
fdba:7b43:1916::d34
fe80::eade:27ff:feb6:fa8c
fe80::ec78:4ff:fec0:a17b