сортировать уникальные URL из журнала - PullRequest
17 голосов
/ 17 ноября 2011

Мне нужно получить уникальные URL-адреса из веб-журнала, а затем отсортировать их. Я думал об использовании команд grep, uniq, sort и вывод их в другой файл

Я выполнил эту команду:

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

тогда только получите уникальный и отсортируйте их:

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

Проблема в том, что я вижу дубликаты, даже если файл отсортирован, что означает, что моя команда сработала. Почему?

Ответы [ 4 ]

23 голосов
/ 17 ноября 2011

uniq | sort не работает: uniq удаляет смежные дубликаты.

Правильный путь sort | uniq или лучше sort -u.

5 голосов
/ 17 ноября 2011

uniq нужно отсортировать ввод, но вы отсортировали после uniq. Попробуйте:

$ sort -u < url.txt > urls.txt
3 голосов
/ 17 ноября 2011

Попробуйте

cat url.txt | sort | uniq

0 голосов
/ 05 июня 2018

Для журналов доступа nginx это дает уникальные вызываемые URL:

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

Ссылка: https://www.guyrutenberg.com/2008/08/10/generating-url-list-from-access-log-access_log/

...