Ho Apache
logfile, access.log
, come contare il numero di occorrenze di riga in quel file? ad esempio il risultato di cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]'
è
a.php
b.php
a.php
c.php
d.php
b.php
a.php
il risultato che voglio è:
3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php
Risposta accettata:
| sort | uniq -c
Come affermato nei commenti.
Convogliando l'output in sort
organizza l'output in ordine alfabetico/numerico.
Questo è un requisito perché uniq
corrisponde solo su righe ripetute, ad esempio
a
b
a
Se usi uniq
su questo file di testo, restituirà quanto segue:
a
b
a
Questo perché i due a
Le s sono separate da b
– non sono righe consecutive. Tuttavia, se prima ordini i dati in ordine alfabetico, prima come
a
a
b
Quindi uniq
rimuoverà le righe ripetute. Il -c
opzione di uniq
conta il numero di duplicati e fornisce l'output nella forma:
2 a
1 b
Riferimenti:
sort(1)
uniq(1)