Colunas awk sum csv baseadas em campos

3

Eu tenho N arquivos assim:

arquivo1.txt

Header1,Header2,Header3,Header4,Header5
A,B,RANDOM,1,2
C,D,RANDOM,3,4

fileN.txt

Header1,Header2,Header3,Header4,Header5
A,B,RANDOM,1,2
C,D,RANDOM,3,4

Todos eles têm os mesmos cabeçalhos. Eu gostaria de somar todos os Header4 e Header5 com base no Header1 e Header2. Portanto, todos os itens com os campos A,B devem somar Header4, Header5.

Para imprimir algo como

A,B,2,4
C,D,6,8
    
por Sten Kin 11.03.2015 / 22:21

1 resposta

4

Supondo que a ordem de saída não seja uma exigência ...

awk '
  BEGIN { FS=OFS=SUBSEP="," }
  { s4[$1,$2]+=$4 ; s5[$1,$2]+=$5 }
  END { for (k in s4) print k,s4[k],s5[k] }
' file1 ... fileN

(Editado e reestruturado para melhor legibilidade.)

    
por 11.03.2015 / 22:38

Tags