Странное поведение при сортировке IP-адресов. (sort -nu)

Странное поведение при сортировке IP-адресов. (sort -nu)

Я только что попытался создать |sort -nuсписок из примерно 30 IP-адресов (числовой и уникальный) и заметил, что в дополнение к отбраковке повторяющихся строк, похожие строки (т. е. адреса с одинаковыми первыми двумя или тремя октетами) рассматриваются как идентичные и также вырезаются.

Что с тобой?

Для иллюстрации вы можете смоделировать этот сценарий следующим образом:


стандартный ввод

for ip in 192.168.1.{1..5};
do
    echo "$ip";
done > ip.log

for ip in 10.1.1.{1..5};
do
    echo "$ip";
done >> ip.log

cat 'ip.log'

стандартный вывод

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5

стандартный ввод

sort -nu 'ip.log'

стандартный вывод

10.1.1.1
192.168.1.1

решение1

Скажите sort, чтобы сортировать по номерам версий:

$ sort -Vu 'ip.log'
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

В качестве альтернативы можно указать ему выполнять числовую сортировку по всем четырем полям:

$ sort -nu -t. -k1 -k2 -k3 -k4  'ip.log'
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

Связанный контент