У меня есть огромный текстовый файл, содержащий IP-адреса:
123.33.22.33
221.23.128.2
123.33.22.33
92.222.192.12
92.222.192.12
123.33.22.33
Я могу отсортировать его по:
123.33.22.33
123.33.22.33
123.33.22.33
221.23.128.2
92.222.192.12
92.222.192.12
и видите (невооруженным глазом), что первый IP-адрес встречается три раза, второй - один раз, а последний - дважды.
Я хотел бы иметь возможность делать это в огромных лог-файлах, очевидно, автоматически. Является ли это возможным?
Спасибо
cat file_with_ips | sort -nr | uniq -c | sort -nr -k 1
отсортирует desc по количеству IP-адресов, показывая счетчики в первом столбце
например
root@pinkpony:~# cat /tmp/xx
123.33.22.33
221.23.128.2
123.33.22.33
92.222.192.12
92.222.192.12
123.33.22.33
root@pinkpony:~# cat /tmp/xx | sort -nr | uniq -c | sort -nr -k1
3 123.33.22.33
2 92.222.192.12
1 221.23.128.2
root@pinkpony:~#
Вы можете использовать uniq -c для подсчета, но не забудьте сначала отсортировать ввод, иначе вы получите только подсчет последовательных одинаковых строк:
sort yourfile | uniq -c
Затем я часто сортирую его по строкам с наибольшим количеством совпадений:
sort yourfile | uniq -c | sort -nr
После того, как вы его отсортировали, вы можете передать его через uniq -c
cat sorted.list | uniq -c
2 1.2.3.4
1 5.6.7.8
Это будет для вас подсчетом.