data1.txt @NS500278 AGATCNGAA + =CCGGGCGG 1 @NS500278 TACAGNGAG + CCCGGGGGG 2 @NS500278 CATTGNACC + CCCGGGGGG 3 data2.txt @NS500278 AGATCNGAA + =CCGGGCGG 1 @NS500278 CATTGNACC + CCCG#GGG# 2 @NS500278 TACAGNGAG + CC=GGG#GG 2 output: @NS500278 AGATCNGAA + =GGGGGCCG 1:data1.txt.out 1:data2.txt.out count:2 @NS500278 CATTGNACC + CCCGGGGGG 3:data1.txt.out 2:data2.txt.out count:5 @NS500278 TACAGNGAG + CCCGGGGGG 2:data1.txt.out 2:data2.txt.out count:4 #### #!/usr/bin/env perl use strict; use warnings; my %seen; $/ = ""; while (<>) { chomp; my ($key, $value) = split ('\t', $_); my @lines = split /\n/, $key; my $key1 = $lines[1]; $seen{$key1} //= [ $key ]; push (@{$seen{$key1}}, $value); } foreach my $key1 ( sort keys %seen ) { my $tot = 0; my $file_count = @ARGV; for my $val ( @{$seen{$key1}} ) { $tot += ( split /:/, $val )[0]; } if ( @{ $seen{$key1} } >= $file_count) { print join( "\t", @{$seen{$key1}}); print "\tcount:". $tot."\n\n"; } }