2013-05-12 2 views
0

У меня есть массив на IP адресах отслеживания логинов, и я хочу узнать, сколько из них отличается. Однако часто бывают логины с адреса IP от X.Y.1.2 и X.Y.2.4. Это обычно означает, что он поступает из той же локальной области, интернет-провайдера или организации. Для наших целей мы не хотим относиться к этим как к отдельным.Найдите отличительные IP-адреса на основе первых двух октетов?

Как отфильтровать адреса IP с теми же первыми двумя октетами?

+2

Программирование язык? –

+0

John H: Я просто понял, что вы не отметили никакого ответа на ваши вопросы как «принятые». Пожалуйста, сделайте это, если на вопрос ответят на ваше удовлетворение. – mawimawi

ответ

1

Ну, так как язык не указан, я попробую его с помощью сценария оболочки. Предположим, что все IP-адреса в текстовом файле с именем «ipaddresses.txt»:

cut -d . -f 1-2 ipaddresses.txt | sort | uniq 

EDIT: так как он должен быть в массиве, я попытаюсь в питоне:

>>> addr = ['1.2.3.4', '1.2.55.66', '33.22.11.0', '33.22.11.1'] 
>>> print set(['.'.join(x.split('.')[0:2]) for x in addr]) 
set(['33.22', '1.2']) 
>>> # just show how many: 
>>> print len(set(['.'.join(x.split('.')[0:2]) for x in addr])) 
2 
0

В рубина

ip = ['1.2.3.4', '1.2.3.5', '10.111.12.13','1.9.1.2'] 

ip.collect{|a| a.split('.')[0..1].join('.')}.uniq 

Выход

["1.2", "10.111", "1.9"] 
Смежные вопросы