Как вычленить IP с большим количеством запросов из логов

По сути есть логи формата (не важен формат особо, привожу для примера):

... 212.47.xx.xx:41245 for example.com.
... 88.80.xx.xx:62212 for example2.com.
... 212.47.xx.xx:41245 for domain3.com.

Для начала вычленяем IP адреса:

cat test.log | awk '{print $2}' | cut -f1 -d\:

Результат:

~# cat test.log | awk '{print $3}' | cut -f1 -d\:
212.47.xx.xx
88.80.xx.xx
212.47.xx.xx

Далее сортируем и считаем количество уникальных IP:

cat test.log | awk '{print $3}' | cut -f1 -d\: | sort | uniq -c

Но если лог большой и адресов много, то список получится разрозненным, поэтому его нужно еще раз отсортировать используя sort -n и далее можно вывести топ 30 например при помощи tail:

cat test.log | awk '{print $4}' | cut -f1 -d\: | sort | uniq -c | sort -n | tail -n 30

В этом случае топ будет считаться снизу вверх, можно зереверсить при помощи sort -nr | head -30

Еще