Somatório para um campo relacionado a outro.

1

Como posso encontrar o somatório de um determinado campo relacionado a outro campo por awk , considere abaixo a amostra:

Arquivo:

boo,foo,VO,1000
boo,foo,VO,1000
bar,var,DT,1000
var,bar,VO,2000

Neste exemplo, preciso coletar o número de $3 por $4 , então o resultado seria:

VO,1000 2
DT,1000 1
VO,2000 1

foram 1º e 2º campos ignorados.

    
por Eng7 12.10.2015 / 17:43

2 respostas

3

Se você não se importa em reordenar, o seguinte deve funcionar

awk -F, '{print $3","$4}' <file name> | uniq -c

uniq -c conta o número de repetições

Para sua entrada, a saída é

  2 VO,1000
  1 DT,1000
  1 VO,2000

Outras edições podem ser obtidas via 2o awk, se necessário

    
por 12.10.2015 / 17:52
1

Para fazer tudo no awk:

awk '
    BEGIN {FS=SUBSEP=","} 
    {count[$3,$4]++} 
    END {for (key in count) print key, count[key]}
' file
DT,1000 1
VO,1000 2
VO,2000 1
    
por 12.10.2015 / 18:47