Inderect referencia o valor aka de um valor em awk

5

Estou procurando uma maneira de resolver esse problema em awk . Entrada:

X 1
Y 2
Z 3
X 4
Y 5

A saída deve ficar assim:

X 5
Y 7
Z 3

Eu vejo dois problemas aqui: o primeiro é a referência indireta em awk . É possível?
Funcionaria desta maneira: se $$1 (X) exists add $2 else declare $$1 (X) then add $2
Mesmo se eu descobrir como fazer isso, ainda precisarei saber o nome de todas as variáveis declaradas, ou seja, X, Y, Z.

Eu estou supondo que há uma maneira mais simples de lidar com essa tarefa, mas não consigo descobrir ...

    
por Cid 03.10.2011 / 11:06

1 resposta

7

Em awk array são associativos, então os seguintes trabalhos:

awk '{ vect[$1] += $2 }; 
 END { for (item in vect) print item, vect[item] }' input-file
    
por 03.10.2011 / 11:13