Grupo e total de uma lista

0

Usando o bash, é possível obter uma contagem de entradas de uma lista, por exemplo, para a lista

a
b
a
cccc
b
a

A saída desejada seria algo como

a 3
b 2
cccc 1
    
por Alexandre Santos 26.01.2016 / 17:36

2 respostas

2

Você pode usar awk :

awk '{
         arr[$0]+=1
     }
     END{
         for (item in arr){
             print(item, arr[item])
         }
     }' inputfile

arr é uma matriz associativa, sua chave é toda a linha ( $0 ), seu valor é o número de ocorrências da chave. No final, fazemos um loop em todo o array e imprimimos todas as chaves e seus valores.

    
por 26.01.2016 / 17:41
5

A maneira usual é usar sort | uniq -c . Para o seu exemplo, isso dá

  3 a
  2 b
  1 cccc

Se você realmente precisar que a contagem esteja no final da linha, uma passagem por sed pode corrigir isso.

    
por 26.01.2016 / 19:30