uniq -c
contará o único de linhas. Exemplo:
$ cat tes.txt
A
A
B
$ cat tes.txt | uniq -c
2 A
1 B
Seria muito útil quando estamos lidando com “linhas diferentes, mas queremos ver o número de informações parciais iguais agrupadas”. Por exemplo, queremos contar a solicitação por minuto do nginx access.log
. Sabemos que o registro de acesso nginx padrão é assim (sua configuração pode variar):
127.0.0.1 - - [13/Feb/2015:21:16:29 -0500] "GET /install.php HTTP/1.1" 502 583 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36"
Então simplesmente:
$ tail -9000 access.log | grep '" 200 ' | cut -d: -f2,3 | uniq -c
19 18:02
29 18:03
43 18:06
32 18:07
15 18:08
29 18:09
para obter solicitações por minuto de OKs nas últimas 9.000 ocorrências.