shell sorting logging uniq

shell - ordenar URLs únicas de registro



sorting logging (4)

Para los registros de acceso nginx, esto proporciona las URL únicas a las que se llama:

sed -r "s/.*(GET|POST|PUT|DELETE|HEAD) (.*?) HTTP.*//2/" /var/log/nginx/access.log | sort | uniq -u

Referencia: https://www.guyrutenberg.com/2008/08/10/generating-url-list-from-access-log-access_log/

Necesito obtener las URL únicas de un registro web y luego ordenarlas. Estaba pensando en usar grep, uniq, ordenar comando y enviar esto a otro archivo

Ejecuté este comando:

cat access.log | awk ''{print $7}'' > url.txt

entonces solo consigue el único y ordénalos

cat url.txt | uniq | sort > urls.txt

El problema es que puedo ver duplicados, aunque el archivo está ordenado, lo que significa que mi comando funcionó. ¿Por qué?


Tratar

cat url.txt | sort | uniq


Uniq necesita su entrada ordenada, pero usted ordenó después de uniq. Tratar:

$ sort -u < url.txt > urls.txt


uniq | sort uniq | sort no funciona: uniq elimina los duplicados contiguos.

La forma correcta es sort | uniq sort | uniq o mejor sort -u .