根据前两个八位字节查找不同的IP地址?

时间:2013-05-12 17:21:12

标签: arrays ip

我在IP地址上有一个数组跟踪登录,我想知道它们中有多少是不同的。但是,通常会从IPX.Y.1.2的{​​{1}}地址进行登录。这通常意味着它来自同一个地区,ISP或组织。出于我们的目的,我们不希望将它们视为不同的。

如何使用相同的前两个八位字节过滤掉X.Y.2.4个地址?

2 个答案:

答案 0 :(得分:1)

好吧,既然没有给出语言,我会用shell脚本来试试。假设所有IP地址都在名为“ipaddresses.txt”的文本文件中:

cut -d . -f 1-2 ipaddresses.txt | sort | uniq
编辑:因为它必须在一个数组中,我将尝试使用python:

>>> 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

答案 1 :(得分: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"]