Golfed para baixo para um one-liner. Funciona bem no GNU awk 3.1.7. Outras implementações do awk podem precisar do $2*60
substituído por substr($2,0,2)*60
. (Esperar que os gostos de '09: 16 'sejam interpretados como um valor inteiro de 9 é esticar um pouco as regras.)
awk '{a[$1]+=$2*60+substr($2,4);b[$1]+=$3}END{for(c in a){print c,a[c],b[c]}}'
Dando saída:
archive 655 103973
testing 590 923987
Alternativamente, uma abordagem de perl:
perl -e 'while(<>){/(\S+) +(\d+):(\d+) (\d+)/;$a{$1}+=$2*60+$3;$b{$1}+=$4;}for(keys %a){print "$_ $a{$_} $b{$_}\n"}'