Processamento de tabela dinâmica a partir da linha de comando

1

Eu tenho esses dados:

300>BRIAN
100>DANY
200>NICOLE
105>DANY

E eu quero gerar o seguinte:

300>BRIAN
205>DANY
200>NICOLE

O delimitador é > e a primeira coluna deve SUM.

    
por Sir Vic 29.07.2017 / 14:58

2 respostas

6

Solução obrigatória GNU Datamash

datamash -st '>' groupby 2 sum 1 < data | datamash -t '>' reverse
300>BRIAN
205>DANY
200>NICOLE
    
por 29.07.2017 / 15:37
4

Usando o awk:

awk -F\> '{pivot[$2]+=$1} END{for (x in pivot) print pivot[x]">"x}' infile.txt

A saída é:

300>BRIAN
205>DANY
200>NICOLE

Explicação:

para cada campo uniqe na coluna2 sumarizando seu valor relativo da primeira coluna, em seguida, no final, faça o loop sobre a matriz dinâmica e primeiro imprima a soma e a próxima string correspondente.

    
por 29.07.2017 / 15:06