Solução obrigatória GNU Datamash
datamash -st '>' groupby 2 sum 1 < data | datamash -t '>' reverse
300>BRIAN
205>DANY
200>NICOLE
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.
Solução obrigatória GNU Datamash
datamash -st '>' groupby 2 sum 1 < data | datamash -t '>' reverse
300>BRIAN
205>DANY
200>NICOLE
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
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.
Tags text-processing awk