#!/usr/bin/perl use warnings; use strict; my $tmpdata = "tmpdata"; my $DestDevice = "Box"; my %data; open my $TMPDATA, "<", "$tmpdata" or die "$!"; while (<$TMPDATA>) { next if (/^(?:$|sh|\s*Source|^$DestDevice|Accounting)/); my @fields = split; push @{ $data{$fields[1]} }, [ @fields[0,2,3] ]; } close $TMPDATA; while () { chomp; for my $match (@{ $data{$_} }) { my @Results = join "\t", $match->[0], $_, @{$match}[1,2]; print @Results, "\n"; } } exit; __DATA__ 10.2.9.2 10.2.9.3 10.2.9.6 __TMPDATA__ Source Destination Packets Bytes 15.254.32.120 10.2.9.2 5 504 209.68.19.130 10.2.9.4 33 15941 17.149.36.162 10.2.9.3 14 3416 17.149.36.15 10.2.9.3 14 3404 67.148.147.65 10.2.9.5 57 39207 8.8.8.8 10.2.9.6 84 8006 Accounting data age is 0w1d Box# __ENDTMPDATA__ #### 209.68.19.130 10.2.9.4 33 15941 67.148.147.65 10.2.9.5 57 39207