Como classificar o número de linhas por data em um arquivo?

0

Eu tenho um arquivo como este:

$ more messages
Jan  2 random text
Jan  2 random text
Jan  3 random text
Jan  2 random text
Jan  3 random text
Jan  3 random text
Jan  3 random text

E eu quero ter isso, usando sort :

Jan  2 : 3
Jan  3 : 4
    
por Namless 03.01.2018 / 11:25

1 resposta

2

Você pode usar cut para dividir os caracteres em que está interessado e, em seguida, sort e uniq -c para contar quantas vezes as diferentes datas aparecem:

$ < input cut -c1-6 |sort |uniq -c
  3 Jan  2
  4 Jan  3

Ou use awk se você for especial sobre o formato de saída:

$ awk '{a[substr($0, 1, 6)] += 1} END { for (x in a) printf "%s : %d\n", x, a[x] }' < x | sort
Jan  2 : 3
Jan  3 : 4

O primeiro bloco usa um array associativo para contar quantas vezes cada data aparece, o fim do bloco END apenas imprime as datas e suas contagens. sort a saída depois, já que não há garantia sobre a ordem em que as chaves saem da matriz.

    
por 03.01.2018 / 11:31

Tags