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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
pimlab
прапорщик
Сообщения: 473
Зарегистрирован: 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 это оформить

Аватара пользователя
skeletor
майор
Сообщения: 2393
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

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

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

Посмотреть в исходники ipcalc'a. Это совсем не просто делается.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1210
Зарегистрирован: 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
прапорщик
Сообщения: 473
Зарегистрирован: 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



Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость