免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8243 | 回复: 16
打印 上一主题 下一主题

子网掩码转换 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-18 16:49 |只看该作者 |倒序浏览
本帖最后由 o0o0o1 于 2011-05-18 18:23 编辑

文件格式如下,有6段,每个字段用逗号分隔开的,
222.245.192.0,222.245.255.255,中国,湖北省,怀化市,电信
222.246.130.0,222.246.130.255,中国,湖北省,长沙市,电信
222.246.192.0,222.246.239.255,中国,湖北省,郴州市,电信
222.249.0.0,222.249.255.255,中国,北京市,北京市,教育信息网
202.96.120.0,202.96.121.255,中国,,,
202.96.120.0,202.96.121.255,中国,浙江省,,
202.96.120.0,202.96.121.255,中国,浙江省,温州市,
202.96.120.0,202.96.121.255,,浙江省,温州市,电信


如  192.168.0.0 - 192.168.0.255 转换后   192.168.0.0/24

删除重复的行,可以合并的就合并  如何实现,还请各位指点一二

论坛徽章:
0
2 [报告]
发表于 2011-05-18 20:18 |只看该作者
这版经验丰富的多,精通算法的不多

论坛徽章:
0
3 [报告]
发表于 2011-05-18 21:28 |只看该作者
等待高人

论坛徽章:
0
4 [报告]
发表于 2011-05-18 22:49 |只看该作者
本帖最后由 南极雨 于 2011-05-19 09:26 编辑

回复 1# o0o0o1


    如  192.168.0.0 - 192.168.0.255 转换后   192.168.0.0/24
这个转换后怎么会是24 呢?
转换需要使用的命令:ipcalc
去重的还好是让我看见了,不然他们又说你月经了.....哈哈
awk '!a[$0]++' file
  1. [root@localhost ~]# ipcalc -mbpn 192.168.1.0 255.255.255.240
  2. NETMASK=255.255.255.240
  3. PREFIX=28
  4. BROADCAST=192.168.1.15
复制代码
prefix=28 ....
不知道24是用什么命令算出来的,不过实现你这个有点儿问题。
你的这道题里面全部都是32,当然,

222.245.192.0,222.245.255.255,中国,湖北省,怀化市,电信
222.246.130.0,222.246.130.255,中国,湖北省,长沙市,电信
222.246.192.0,222.246.239.255,中国,湖北省,郴州市,电信
222.249.0.0,222.249.255.255,中国,北京市,北京市,教育信息网

以上这些全部是24-32之间,可以理解

剩下的
202.96.120.0,202.96.121.255,中国,,,
202.96.120.0,202.96.121.255,中国,浙江省,,
202.96.120.0,202.96.121.255,中国,浙江省,温州市,
202.96.120.0,202.96.121.255,,浙江省,温州市,电信
这些,这明明是2个网段,当然设置成局域网也是可以的,这个21-24,子网掩码应该是:255.255.248(249).0
[root@localhost ~]# ipcalc -p 202.96.120.0 255.255.248.0
PREFIX=21

[root@localhost ~]# ipcalc -p  202.96.120.0 255.255.249.0
PREFIX=24


OK ,到这里基本就说明白了,如果你的数据都是类似这样的话,只需要取固定值24就可以了。所以,答案是:
这里修改一下啊~!然而,如果是202.96.120.0  202.96.121.0两个网段,那应该就是23,子网掩码就得是255.255.248.0,(注意:以上子网掩码是按最大的算的.),所以这个24就又得推翻了.,答案我出不了...不好意思.

awk '!a[$0]++' file | sed 's^/\([1-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\),.*[1-9][0-9][0-9]\(.*\)/\1\/24\2/g'

哈哈,我也恍然大悟了..

注意:21-24 、32 说的都是IP地址划分的网络地址和主机地址,例如
192.168.1.2,为C类IP地址, 对应的二进制码为:11000000.10101000.00000001.00000010
前21位说的是二进制IP的前21位为网络地址,那么从21位以后的就表示主机地址(IP)
详细的去查IP地址划分吧!
  1. [root@localhost ~]# ipcalc
  2. ipcalc: ip address expected
  3. Usage: ipcalc [OPTION...]
  4.   -b, --broadcast     Display calculated broadcast address
  5.   -h, --hostname      Show hostname determined via DNS
  6.   -m, --netmask       Display default netmask for IP (class A, B, or C)
  7.   -n, --network       Display network address
  8.   -p, --prefix        Display network prefix
  9.   -s, --silent        Don't ever display error messages

  10. Help options:
  11.   -?, --help          Show this help message
  12.   --usage             Display brief usage message
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-05-19 00:40 |只看该作者
学习了。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2011-05-19 02:55 |只看该作者
回复 4# 南极雨


楼主给的数据没有重复行吧,估计意思是前两列相同就认为重复,比如:
202.96.120.0,202.96.121.255

论坛徽章:
0
7 [报告]
发表于 2011-05-19 09:00 |只看该作者
我抽取的一段数据,实际数据有2万多行,是一个ip数据库

论坛徽章:
0
8 [报告]
发表于 2011-05-19 09:02 |只看该作者
回复 2# shplpy


    这个题需要什么算法?装B!

论坛徽章:
0
9 [报告]
发表于 2011-05-19 09:11 |只看该作者

论坛徽章:
0
10 [报告]
发表于 2011-05-19 09:27 |只看该作者
回复 6# Shell_HAT


也对,呵呵,我就当自学了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP