список ип адресов, сортировка

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

список ип адресов, сортировка

Непрочитанное сообщение pimlab » 2018-02-14 18:56:44

Есть огромный список ип адресов для фильтрации, его скармливаю как есть трансмиссион.
Решил его немного облегчить так как много дублей, но сортировкой их не убрать и нужен более продвинутый подход.
Покажу на примере:
1.1.0.0 - 1.255.255.255
1.2.2.1 – 1.2.5.255
1.2.3.10 - 1.2.3.10
1.2.3.50 - 1.2.3.60

Видно , что диапазон адресов в строке 1 полностью перекрывает остальные строки
значит они не нужны.
Пните как в скрипте эту проверку сделать.
Пробовал с awk раскидать всё по разным файлам , но что дальше с этим делать.
С таким количеством переменных не сталкивался и вообще не знаю как такое осуществить
Пните , если не сложно , как в shell это оформить

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

список ип адресов, сортировка

Непрочитанное сообщение skeletor » 2018-02-15 18:33:09

Посмотреть в исходники ipcalc'a. Это совсем не просто делается.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

список ип адресов, сортировка

Непрочитанное сообщение xM » 2018-02-15 19:03:33

Сортировка списка одиночных IPv4 с подсчётом и сортировкой по частотности

Код: Выделить всё

cat iplist | awk 'BEGIN { FS = "." } ; { printf("%s.%s.%s\n%s.%s.%s.%s\n", $1, $2, $3, $1, $2, $3, $4) }' | sort | uniq -c | sort -rn
отсюда
IT voodoo blog https://kostikov.co

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

список ип адресов, сортировка

Непрочитанное сообщение pimlab » 2018-02-15 22:59:46

skeletor писал(а):Посмотреть в исходники ipcalc'a. Это совсем не просто делается.
Не моё это ... ни бум бум в этом.
Пока на пальцах думаю , как вообще проверку сделать.

Отправлено спустя 5 минут 3 секунды:
xM писал(а):Сортировка списка одиночных IPv4 с подсчётом и сортировкой по частотности

Код: Выделить всё

cat iplist | awk 'BEGIN { FS = "." } ; { printf("%s.%s.%s\n%s.%s.%s.%s\n", $1, $2, $3, $1, $2, $3, $4) }' | sort | uniq -c | sort -rn
отсюда
Сейчас сортировка как- то так, но это чисто косметически :

Код: Выделить всё

cat $dir4/*.gz | gunzip -c | sort -u | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n -k5,5n -k6,6n -k7,7n -k8,8n \
| sed "/^0.0.0.[0-1]/d;/^2[2-5][0-9].0.0.0/d;/^127.0.0.[0-2]-127./d;/^192.168.0.0-192/d;/^169.254.0.0-169/d" \
| sed "s/\-/\./" | awk -F. '$4 >= 0 && $4 != 255 && $8 != 0 && $8 <= 255 {print $1"."$2"."$3"."$4"-"$5"."$6"."$7"."$8}'  \
| sed "s/\-/\./" | awk -F. '($8 != 0 && $8 != 255 && $4 == 0 && $4 = 1 && ($4 <= $8 || $3 <= $7 || $2 <= $6)) || ($4 <= $8 || $3 <= $7 || $2 <= $6) \
{print ":"$1"."$2"."$3"."$4"-"$5"."$6"."$7"."$8}' | $gzip -9c > $dir/blocklist.gz


BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

список ип адресов, сортировка

Непрочитанное сообщение BlitzKrieg » 2018-03-03 2:02:47

В случаях, когда нужно избавиться от дублей, я заполняю хеш-массив используя в качестве ключа значение, которое нужно "уникализировать".
Ассоциативные массивы есть в bash ну и perl. На бэше, это пара-тройка строк.

Отправлено спустя 25 минут 57 секунд:

Код: Выделить всё

#!/bin/bash

declare -A hash

while read IP; do
  hash["$IP"]=
done < iplist

for IP in "${!hash[@]}"; do
 echo "$IP"
done
Гы, дочитал условие, немного не в тему, но все равно для общего развития полезно :-)

Отправлено спустя 7 минут 12 секунд:
То, что вы нагенерили - ад. Если вы любите людей (себя и окружающих), то не стоит это никому показывать. Я бы сделал аккуратненький скриптик, подключив проверку вхождения адреса в диапазон (ipcalc) или же на perl/python там для этого есть библиотеки.

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

список ип адресов, сортировка

Непрочитанное сообщение pimlab » 2018-03-06 14:27:50

Как на гуглил, собрал в кучу ...и на выходе имеем что есть и оно работает.
список имеет 650000 уникальных строк вида (x.x.x.x-ы.ы.ы.ы)
из которых я предпологаю примерно 100000 взаимоисключающиx.

Собственно за помощью сюда и обратился так как на своих начальных знаиях далеко не уедешь.
Дуамю качалщикам этот скрипт + список пригодился бы , а если нет ну мне и так сойдет