$ for i in A B C; do echo -e "\n*** $i"; cat $i; echo '----'; cat -vet $i; done
*** A
foo 73
bar 35
word 27
blah 23
----
foo^I73$
bar^I35$
word^I27$
blah^I23$
*** B
bar 35
yada 3
word 27
blah 23
----
bar^I35$
yada^I3$
word^I27$
blah^I23$
*** C
foo 73
word 27
blah 23
life 42
----
foo^I73$
word^I27$
blah^I23$
life^I42$
####
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
my @in_files = qw{A B C};
my $outfile = 'merge_count.out';
my %data;
my $out_fmt = "%s\t%d\n";
for my $infile (@in_files) {
open my $fh, '<', $infile;
while (<$fh>) {
my ($word, $count) = split;
$data{$word} += $count;
}
}
open my $fh, '>', $outfile;
for my $key (sort { $data{$a} <=> $data{$b} } keys %data) {
printf $fh $out_fmt, $key, $data{$key};
}
##
##
$ cat merge_count.out
yada 3
life 42
blah 69
bar 70
word 81
foo 146
$ cat -vet merge_count.out
yada^I3$
life^I42$
blah^I69$
bar^I70$
word^I81$
foo^I146$