Unix – подсчет уникальных IP-адресов, сортировка их по частоте и сортировка по IP, когда количество повторений одинаково

У меня есть список IP-адресов в файле:

72.204.55.250 72.204.55.250 72.204.55.250 72.204.55.250 72.204.55.250 96.41.51.202 208.115.113.91 178.137.94.166 178.137.94.166 208.115.113.91 96.41.51.202 141.8.143.179 141.8.143.179 

Теперь я собираюсь отсортировать их и позвонить в службу uniq -c и я получаю:

  2 141.8.143.179 2 178.137.94.166 2 208.115.113.91 5 72.204.55.250 2 96.41.51.202 

Теперь я отсортирую их по наиболее частому ( sort -rn ), но моя проблема состоит в том, чтобы сортировать их по IP-адресу, когда количество повторений одинаково в порядке убывания. Я нашел команду sort для только IP-адреса, который работает:

 sort -rn -t . -k1,1 -k2,2 -k 3,3 -k4,4 

но, как я уже упоминал выше, я не знаю, как объединить его с первым столбцом (количество повторений), чтобы получить эти ожидаемые результаты:

  5 72.204.55.250 2 208.115.113.91 2 178.137.94.166 2 141.8.143.179 2 96.41.51.202 

Как я могу это достичь? Заранее благодарю за любую помощь.

2 Solutions collect form web for “Unix – подсчет уникальных IP-адресов, сортировка их по частоте и сортировка по IP, когда количество повторений одинаково”

Если ваш сорт может иметь стабильный вид , например, сортировку GNU с параметром -s или --stable , строки с полями, не связанными с ключами сортировки, не будут сортироваться по этим полям при наличии связей, но будут оставаться в их одинаковых относительных положениях ,

 $ sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 | uniq -c | sort -n -r -s 5 72.204.55.250 2 96.41.51.202 2 141.8.143.179 2 178.137.94.166 2 208.115.113.91 

Хотя вы можете сделать это с помощью средств командной строки, вот способ сделать это быстро, если у вас есть доступ к любой базе данных Postgres (просто для удовольствия):

 [vagrant@localhost ~]$ cat ips.txt 72.204.55.250 72.204.55.250 72.204.55.250 72.204.55.250 72.204.55.250 96.41.51.202 208.115.113.91 178.137.94.166 178.137.94.166 208.115.113.91 96.41.51.202 141.8.143.179 141.8.143.179 [vagrant@localhost ~]$ psql Expanded display is used automatically. psql (9.3.15) Type "help" for help. vagrant=# create temp table ips (ipaddress inet); CREATE TABLE vagrant=# \copy ips from ips.txt vagrant=# select count(*), ipaddress vagrant-# from ips vagrant-# group by ipaddress vagrant-# order by count desc, ipaddress vagrant-# ; count | ipaddress -------+---------------- 5 | 72.204.55.250 2 | 96.41.51.202 2 | 141.8.143.179 2 | 178.137.94.166 2 | 208.115.113.91 (5 rows) vagrant=# \q [vagrant@localhost ~]$ 

У меня на самом деле есть экземпляр Postgres для песочницы на бродячей машине для такого рода действий. Handy.

Обратите внимание на правильную сортировку по IP-адресу, а не на алфавитную сортировку. Это связано с использованием типа данных Postgres для IP-адресов, «inet».

  • Как постоянно контролировать количество вхождений, проходящих через трубу
  • Сортировка данных журнала с помощью bash
  • Сохранение строк повторяется определенное количество раз
  • Как получить только уникальные результаты без сортировки данных?
  • Как let `sort | uniq -c` отделяет количество вхождений с помощью табулятора?
  • Мне нужны данные из файла csv, которого нет во втором файле csv
  • Удалите повторяющиеся строки с помощью twist
  • Подключения к серверу мониторинга - проблема форматирования Netstat
  • Найти дубликаты по столбцу в файле
  • Учет уникальных пользователей в файле wtmp
  • Как использовать grep, sort и uniq для создания трех полей вывода
  • Interesting Posts

    Как сделать мой диск отключенным в ожидании нечитаемых секторов

    Зачем мне нужно указывать переменную для if, но не для echo?

    Файл /etc/resolv.conf удаляется при каждой перезагрузке, почему или что?

    Возможно ли создать файл, который не может быть удален обычным пользователем, даже если у всех каталогов есть разрешение 777?

    rtmpdump скомпилировать без root, librtmp.so.1 => не найден

    Как использовать sed для замены ключей в файле с помощью регулярного выражения?

    не может устанавливать гостевые дополнения virtuabbox или даже обновлять kali linux

    список резервных копий установленных пакетов

    где «файлы» ipcs и почему названы pipe (mkfifo), не перечисленные в ipcs

    Инкрементный файл резервной копии по дате

    Как создать службу для сценария оболочки, чтобы я мог начать и остановить ее, как демон?

    Несоответствие между выводами `fsck` и` df`

    Сбой по умолчанию vnc-порт (?)

    Ошибка systemd-timesyncd в контейнере OpenVZ

    Как назначить статические IP-адреса для HOST, BRIDGE и GUEST

    Linux и Unix - лучшая ОС в мире.