免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1877 | 回复: 7

[文本处理] 统计subnet IP 使用百分比 [复制链接]

论坛徽章:
0
发表于 2016-02-17 18:10 |显示全部楼层
本帖最后由 zsgd 于 2016-02-17 19:10 编辑

目的: 统计出扫描出来的IP list 中每个网段使用的百分比

1, 已经有扫描出来的IP list, 格式如下


192.168.1.1 alive
192.168.1.2 null
........
192.168.1.254 alive

192.168.2.1 alive
192.168.2.2 alive
.........
192.168.2.254 null

192.168.3.1 null
192.168.3.2 null
..........
192.168.3.254 alive

就是说, 每个subnet 已经scan 出每个IP的情况是alive or null, 共有n个subnet


3, 统计出每个subnet 中alive 的百分比, 得出的结果如下

192.168.1.x  ?%
192.168.2.x  ?%
192.168.3.x  ?%

4, 谢谢!!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2016-02-17 19:49 |显示全部楼层
回复 1# zsgd

$ awk 'function out(){if(g)printf("%s %2d%%\n",g,a[g]/t[g]*100)}NF>1{sub(/[.][0-9]+$/,".x",$1);if(g!=$1)out();t[g=$1]++;if($2=="alive")a[g]++}END{out()}' FILE
192.168.1.x 66%
192.168.2.x 66%
192.168.3.x 33%

   

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2016-02-17 21:04 |显示全部楼层
  1. awk -F '.[0-9]+ ' '{a[$1]++;b[$1$NF]++}END{for(i in a) printf "%s %2d%%\n",i".x",b[i"alive"]/a[i]*100}' file1
  2. 192.168.1.x 66%
  3. 192.168.2.x 66%
  4. 192.168.3.x 33%
复制代码
回复 1# zsgd


   

论坛徽章:
0
发表于 2016-02-17 23:41 |显示全部楼层
谢谢楼上两位热情帮忙, 对你给出的方法, 俺也仔细琢磨了,确实没看懂, 希望不要认为是俺懒,还是要继续追问,应该是俺没表达清楚,没达到想要的结果, 解释如下:
在已经有的list 里面, 已经有了每个网段IP使用状态,就是alive  和null两种,现在想统计出每个网段已经使用IP占该网段的百分比


首先,需要统计出每个网段中alive IP 的个数,   然后计算出alive 占本段百分比

想要的格式应该是这样:  
192.168.1.0/24   29%
192.168.2.0/24   66%

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2016-02-18 09:55 |显示全部楼层
回复 4# zsgd

here you are

$ cat FILE
192.168.1.1 alive
192.168.1.2 null
192.168.1.254 alive

192.168.2.1 alive
192.168.2.2 alive
192.168.2.254 null

192.168.3.1 null
192.168.3.2 null
192.168.3.254 alive

$ awk 'function out(){if(g)printf("%s %2d%%\n",g,a[g]/t[g]*100)}NF>1{sub(/[.][0-9]+$/,".x",$1);if(g!=$1)out();t[g=$1]++;if($2=="alive")a[g]++}END{out()}' FILE
192.168.1.x 66%
192.168.2.x 66%
192.168.3.x 33%

$ awk 'function out(){if(g)printf("%s %2d%%\n",g,a[g]/t[g]*100)}NF>1{sub(/[.][0-9]+$/,".0/24",$1);if(g!=$1)out();t[g=$1]++;if($2=="alive")a[g]++}END{out()}' FILE
192.168.1.0/24 66%
192.168.2.0/24 66%
192.168.3.0/24 33%

   

论坛徽章:
0
发表于 2016-02-18 10:15 |显示全部楼层
本帖最后由 zsgd 于 2016-02-18 10:19 编辑

楼上的朋友, 谢谢你!

按你的方法, 实现的是把每行中alive  null 字段部分进行了百分比替换, 如下

9.181.64.245,  0%
9.181.64.246,  0%
9.181.64.247,  0%
9.181.64.248,  0%
9.181.64.249,  0%
9.181.64.250,  0%
9.181.64.251,  0%
9.181.64.252,  0%
9.181.64.253,  0%
9.181.64.254,  0%

[root@lsfgpfs02 ping]# head  userip.csv
9.181.24.1, alive
9.181.24.2, null
9.181.24.3, alive
9.181.24.4, alive
9.181.24.5, null
9.181.24.6, null
9.181.24.7, null
9.181.24.8, alive


上面红色部分, 是按你的方法实现的结果

上面蓝色部分, 是原始的list


现在是想实现把如上, 9.181.24.0/24 这个段中, 有alive 和null, 把alive 的数量统计出来, 然后再把alive 在本段中占得百分比计算出来
在总的list 中, 还有100多个其他网段, 都实现这样的功能


再次谢谢你!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2016-02-18 10:21 |显示全部楼层
回复 6# zsgd

That is your problem...
   
你问的问题与实际问题不同...

论坛徽章:
0
发表于 2016-02-18 10:24 |显示全部楼层
楼上的朋友, 谢谢你, 可以了,是我把一个“逗号” 忘了, 谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP