Чтобы найти топ-10 вхождений IP в apache.log
, вы можете использовать что-то похожее на следующее:
awk '$7 ~ /.php$/{top[$1]++} END {for (i in top) printf "%6d - %s\n", top[i], i}' apache.log |
sort -r -n |
head -n10
Где awk
создает массив, проиндексированный по IP, содержащий количество раз каждый IP-адрес имеет доступ к файлу .php
. В правиле END
вы просто выводите число вхождений и IP-адрес и перенаправляете вывод в sort -r -n
, чтобы изменить сортировку по номерам c. Затем направьте трубку к head -n10
, чтобы взять верхние 10.
Ваш вывод будет выглядеть так:
622 - 72.180.70.46
8 - 47.90.246.235
8 - 129.211.6.66
4 - 159.65.24.22
2 - 192.168.6.104
1 - 52.237.38.163
1 - 198.199.83.39
1 - 192.99.36.177
1 - 18.222.26.24
1 - 167.99.212.214
(вы можете настроить формат вывода printf
по желанию)