Source IP Destination IP Bytes 10.0.0.24 93.188.134.219 32684 120.137.205.48 10.0.0.171 258 10.0.0.26 84.124.185.220 432 10.0.0.10 84.31.180.236 1476 84.31.180.236 10.0.0.10 4273 #### 10.0.0.10 84.31.180.236 1476 84.31.180.236 10.0.0.10 4273 #### 10.0.0.10 84.31.180.236 5749 #### 10.0.0.24 93.188.134.219 32684 120.137.205.48 10.0.0.171 258 10.0.0.26 84.124.185.220 432 10.0.0.10 84.31.180.236 5749 #### #!/usr/bin/perl use strict; my @lines; open(D, $ARGV[0]) || die("Could not open file!\nUsage: $0 file "); @lines = ; close(D); my %count; foreach (@lines) { next if /^#|^(\s)*$/; chomp; my ($ipa, $ipb, $bytes) = split /\t\s?/; if((grep /$ipb/, %count) && (grep /$ipa/, (%{$count{$ipb}}))) { $count{$ipb}{$ipa}+=$bytes; } else { $count{$ipa}{$ipb}+=$bytes; } } foreach my $key(keys %count){ foreach my $k(keys %{$count{$key}}){ print "${key}\t$k\t$count{$key}->{$k}\n"; } } #### Source IP Destination IP Bytes Packets Flows 10.0.0.10 84.31.180.236 1476 241 22 84.31.180.236 10.0.0.10 4273 15 3 => 10.0.0.10 84.31.180.236 5749 256 25