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)