Tengo Apache
archivo de registro, access.log
, ¿cómo contar el número de ocurrencias de línea en ese archivo? por ejemplo, el resultado de cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]'
es
a.php
b.php
a.php
c.php
d.php
b.php
a.php
el resultado que quiero es:
3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php
Respuesta aceptada:
| sort | uniq -c
Como se indica en los comentarios.
Canalización de la salida en sort
organiza la salida en orden alfabético/numérico.
Este es un requisito porque uniq
solo coincidencias en líneas repetidas, es decir
a
b
a
Si usas uniq
en este archivo de texto, devolverá lo siguiente:
a
b
a
Esto se debe a que los dos a
s están separados por b
– no son líneas consecutivas. Sin embargo, si primero ordena los datos en orden alfabético primero como
a
a
b
Entonces uniq
eliminará las líneas repetidas. El -c
opción de uniq
cuenta el número de duplicados y proporciona resultados en la forma:
2 a
1 b
Referencias:
sort(1)
uniq(1)