免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: l3lf
打印 上一主题 下一主题

[文本处理] IP段生成文本列表 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2014-02-27 19:00 |只看该作者
回复 29# 关阴月飞

改了,
IP有列表但全部一样
  1. [root@centos tmp]# cat qq.sh
  2. #!/bin/bash
  3. while read LINE
  4. do
  5. #将起止IP地址转为成数字:
  6. star=`awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
  7. end=`awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE##*-}"`
  8. #生成两个IP之间所有地址
  9. seq $star $end |awk  '{i=$0;print int(i/256^3),int(i%256^3/256^2),int(i%256^3%256^2/256),i%256^3%256^2%256}' OFS=.
  10. done < ip_list.txt
  11. [root@centos tmp]# cat ip_list.txt
  12. 192.168.1.2-192.168.1.6
  13. 172.16.0.5-172.16.0.10
  14. [root@centos tmp]# ./qq.sh
  15. 192.168.17.128
  16. 192.168.17.128
  17. 192.168.17.128
  18. 192.168.17.128
  19. 192.168.17.128
  20. 172.16.1.16
  21. 172.16.1.16
  22. 172.16.1.16
  23. 172.16.1.16
  24. 172.16.1.16
  25. 172.16.1.16
  26. [root@centos tmp]#
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
32 [报告]
发表于 2014-02-27 19:05 |只看该作者
回复 30# l3lf


照例这样执行看看过程:
bash -x xx.sh

目测是seq也要指定格式:
把脚本中:
seq $star $end

改成
seq -f "%.f"  $star $end

论坛徽章:
0
33 [报告]
发表于 2014-02-27 19:10 |只看该作者
回复 31# 关阴月飞

这次行了,相当感谢
  1. [root@centos tmp]# bash -x qq.sh
  2. + read LINE
  3. ++ awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}'
  4. + star=3232235778
  5. ++ awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}'
  6. + end=3232235782
  7. + seq -f %.f 3232235778 3232235782
  8. + awk '{i=$0;print int(i/256^3),int(i%256^3/256^2),int(i%256^3%256^2/256),i%256^3%256^2%256}' OFS=.
  9. 192.168.1.2
  10. 192.168.1.3
  11. 192.168.1.4
  12. 192.168.1.5
  13. 192.168.1.6
  14. + read LINE
  15. ++ awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}'
  16. + star=2886729733
  17. ++ awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}'
  18. + end=2886729738
  19. + seq -f %.f 2886729733 2886729738
  20. + awk '{i=$0;print int(i/256^3),int(i%256^3/256^2),int(i%256^3%256^2/256),i%256^3%256^2%256}' OFS=.
  21. 172.16.0.5
  22. 172.16.0.6
  23. 172.16.0.7
  24. 172.16.0.8
  25. 172.16.0.9
  26. 172.16.0.10
  27. + read LINE
  28. [root@centos tmp]#
复制代码

论坛徽章:
0
34 [报告]
发表于 2014-03-03 11:30 |只看该作者
回复 7# 关阴月飞

请教下,这一行“star=`echo $1 |awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'`”中的$1*256^3和整个awk是执行了什么操作,谢谢。


   

论坛徽章:
8
天秤座
日期:2013-09-02 09:10:44CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-11-20 16:38:31巨蟹座
日期:2013-12-18 13:03:34天秤座
日期:2013-12-31 13:28:40卯兔
日期:2014-01-22 17:09:40技术图书徽章
日期:2014-02-27 20:31:47巳蛇
日期:2014-09-22 10:25:32
35 [报告]
发表于 2014-03-03 13:11 |只看该作者
      学习了   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
36 [报告]
发表于 2014-03-03 14:36 |只看该作者
回复 33# 酋长海布里


$1*256^3   就是  $1 * 256 * 256 * 256  这样的一个数学运算
作用就是把IP地址转换成数字

论坛徽章:
0
37 [报告]
发表于 2014-12-04 18:16 |只看该作者
GOOD!!非常有用的小功能!

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
38 [报告]
发表于 2017-04-17 14:58 |只看该作者
来个python版本
  1. #python3
  2. import ipaddress

  3. d = [ipaddr for ipaddr in ipaddress.summarize_address_range(
  4.     ipaddress.IPv4Address('192.168.1.0'), # start IP
  5.     ipaddress.IPv4Address('192.168.1.25') # end IP
  6. )]
  7. for i in d:
  8.     for x in ipaddress.IPv4Network(i):
  9.         print(x)
复制代码

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
39 [报告]
发表于 2017-04-17 15:01 |只看该作者
本帖最后由 baby_神 于 2017-04-17 15:03 编辑

无奈了,每次发帖都是两次。。。cu最近卡的不行呐
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP