Понадобилось мне как-то выдрать из файла данные и сгруппировать результаты. К примеру, можно посмотреть статистику использования UserAgent в логах Nginx. Или посмотреть с каких IP адресов больше всего запросов.
Всё это можно сделать в консоли комбинируя sort и uniq. Сначала выбираем нужные данные, например, с помощью awk, потом сортируем sort
, затем выбираем группируем с подсчётом uniq -c
, и после снова сортируем результат sort -rn
.
| sort | uniq -c | sort -rn
Пример:
cat ./gitlab_access.log | grep auth | awk '{print $1}' | sort | uniq -c | sort -rn
Получим что-то типа:
120 192.168.0.42
58 192.168.0.22
29 192.168.0.236
14 192.168.0.160
8 192.168.0.162
5 192.168.0.204
3 192.168.0.24
2 192.168.0.99