Agrupe o conteúdo de um arquivo por dois campos e some um terceiro campo

2

Eu tenho um arquivo abaixo, onde eu quero resumir o terceiro campo e contar, com base em um primeiro e segundo campos do grupo.

Arquivo

 AAA~111~2
 BBB~111~2
 AAA~111~1
 AAA~111~3
 AAA~222~2

Saída esperada

 AAA~111~6~3
 BBB~111~2~1
 AAA~222~2~1

Até agora, eu tenho esse código que resume apenas a terceira coluna

 awk 'BEGIN { FS=OFS=SUBSEP="~"}{arr[$1,$2]+=$3 }END {for (i in arr) print i,arr[i]}' File
    
por User101 10.01.2017 / 03:10

1 resposta

1

Você só precisa acompanhar a contagem da mesma forma que acompanha a soma:

$ awk -F'~' 'BEGIN { SUBSEP = OFS = FS } { s[$1,$2] += $3; ++c[$1,$2] } END { for (i in s) { print i, s[i], c[i] } }' file
AAA~111~6~3
BBB~111~2~1
AAA~222~2~1
    
por 16.02.2017 / 00:13

Tags