Mám Apache logfile, access.log , jak spočítat počet výskytů řádků v tomto souboru? například výsledek cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]' je
a.php
b.php
a.php
c.php
d.php
b.php
a.php
výsledek, který chci, je:
3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php
Přijatá odpověď:
| sort | uniq -c
Jak je uvedeno v komentářích.
Výstup výstupu do sort uspořádá výstup do abecedního/numerického pořadí.
Toto je požadavek, protože uniq shoduje se pouze na opakovaných řádcích, tj.
a
b
a
Pokud používáte uniq v tomto textovém souboru vrátí následující:
a
b
a
Je to proto, že dva a s jsou odděleny b – nejsou po sobě jdoucí řádky. Pokud však nejprve seřadíte data v abecedním pořadí, nejprve jako
a
a
b
Poté uniq odstraní opakující se řádky. -c možnost uniq spočítá počet duplikátů a poskytne výstup ve tvaru:
2 a
1 b
Reference:
sort(1)uniq(1)