% puroawk
:
$ awk -F'[, ]' 'NR==FNR{n[$2]=$1;next}{m[$3]+=n[$1]}
END{for(i in m){print i " " m[i]}}' \
file1 file2
degree1 2
degree2 5
Ou você pode colocá-lo em um script como este:
#!/usr/bin/awk -f
BEGIN {
FS="[, ]"
}
{
if (NR == FNR) {
n[$2] = $1;
next;
} else {
m[$3] += n[$1];
}
}
END {
for (i in m) {
print i " " m[i];
}
}
Primeiro, defina o separador de campos como vírgula e espaço (ou seja, a opção BEGIN
ou -F
da linha de comando.
Em seguida, ao analisar o primeiro arquivo (o FNR == NR
idiom), coloque o número de conexões de um usuário em matriz indexada por nome de usuário. Ao analisar o (s) arquivo (s) a seguir, adicione o número de conexões para cada usuário no array indexado pelo grupo de usuários.
Finalmente (o bloco END
) verifica a matriz inteira e imprime a chave, pares de valores.