0

我有一个关于地址跟踪登录的数组IP,我想找出其中有多少是不同的。但是,通常会有来自 和 的地址IP的登录。这通常意味着它来自同一个本地区域、ISP 或组织。出于我们的目的,我们不想将它们视为不同的。X.Y.1.2X.Y.2.4

如何过滤掉IP前两个八位字节相同的地址?

4

2 回答 2

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
于 2013-05-12T17:26:56.723 回答
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"]
于 2013-05-12T17:35:46.900 回答