免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: l3lf

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

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2014-02-24 11:33 |显示全部楼层
本帖最后由 这个冬天不冷 于 2014-02-24 11:34 编辑
  1. [root@syh test]# ./ip.php
  2. 111.0.0.0
  3. 111.0.0.1
  4. 111.0.0.2
  5. 111.0.0.3
  6. 111.0.0.4
  7. 111.0.0.5
  8. 111.0.0.6
  9. 111.0.0.7
  10. 111.0.0.8
  11. 111.0.0.9
  12. 111.0.0.10
  13. 111.0.0.11
  14. 111.0.0.12
  15. 111.0.0.13
  16. 111.0.0.14
  17. 111.0.0.15
  18. 111.0.0.16
  19. 111.0.0.17
  20. 111.0.0.18
  21. 111.0.0.19
  22. 111.0.0.20
  23. [root@syh test]# cat ip.php
  24. #!/usr/bin/php
  25. <?php

  26. /**
  27. * @author suyahui
  28. */


  29. $ip_start  = "111.0.0.0";// ▒ɴ▒▒ļ▒▒▒▒▒
  30. $ip_stop = "111.0.0.20";

  31. $ip_long_start = ip2long($ip_start);
  32. $ip_long_stop = ip2long($ip_stop);

  33. for($i = $ip_long_start;$i<=$ip_long_stop;$i++)
  34. {
  35.     echo long2ip($i),"\n";
  36. }

  37. [root@syh test]#


  38. ip太多只好测试0-20个
复制代码

论坛徽章:
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
发表于 2014-02-24 11:34 |显示全部楼层
本帖最后由 jason680 于 2015-06-08 13:53 编辑

回复 7# 关阴月飞

combine your idea together with ip2n, n2ip

$ echo 111.0.255.250-111.1.0.5 | awk -F'-' 'function ip2n(ip, n,c){split(ip,a,".");for(c=1;c<=4;c++)n=n*256+a[c];return n}function n2ip(n, ip,c){ip=n%256;for(c=3;c>0;c--){n=int(n/256);ip=(n%256)"."ip}return ip}{s=ip2n($1);e=ip2n($2);while(s<=e)print n2ip(s++)}'
111.0.255.250
111.0.255.251
111.0.255.252
111.0.255.253
111.0.255.254
111.0.255.255
111.1.0.0
111.1.0.1
111.1.0.2
111.1.0.3
111.1.0.4
111.1.0.5

论坛徽章:
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
发表于 2014-02-24 11:42 |显示全部楼层
回复 12# jason680


    用函数封装一下,整体代码确实简洁 牛,学习了!

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-02-24 11:43 |显示全部楼层
回复 12# jason680
一个实用的小程序产生了,收藏一下。

   

论坛徽章:
0
发表于 2014-02-24 13:43 |显示全部楼层
回复 7# 关阴月飞


    这方法管用,能不能直接输出到文本

论坛徽章:
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
发表于 2014-02-24 14:06 |显示全部楼层
本帖最后由 关阴月飞 于 2014-02-26 09:52 编辑

回复 15# l3lf


    从ip列表中读取记录,你把结果直接重定向一下就行了:
  1. [root@ awktest]# cat xx.sh
  2. #!/bin/bash
  3. while read LINE
  4. do
  5. #将起止IP地址转为成数字:
  6. star=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
  7. end=`awk -F. '{print $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@ awktest]# cat ip_list.txt
  12. 192.168.1.2-192.168.1.6
  13. 172.16.0.5-172.16.0.10
  14. [root@ awktest]# ./xx.sh
  15. 192.168.1.2
  16. 192.168.1.3
  17. 192.168.1.4
  18. 192.168.1.5
  19. 192.168.1.6
  20. 172.16.0.5
  21. 172.16.0.6
  22. 172.16.0.7
  23. 172.16.0.8
  24. 172.16.0.9
  25. 172.16.0.10
  26. [root@ awktest]# ./xx.sh  >outfile.txt   
复制代码

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2014-02-24 15:32 |显示全部楼层
记得ipcalc这个可以实现,不过我好久没碰这个了。

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
发表于 2014-02-24 23:31 |显示全部楼层
各位大大的好方法果断学习了

论坛徽章:
0
发表于 2014-02-26 04:32 |显示全部楼层
回复 16# 关阴月飞


呀,再麻烦一下,为什么照着复制都不能运行的。。?
  1. root@Openwrt:/tmp# cat qq
  2. #bin/bash
  3. while read LINE
  4. do
  5. #将起止IP地址转为成数字:
  6. star=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
  7. end=`awk -F. '{print $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@Openwrt:/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@Openwrt:/tmp# sh qq
  15. qq: line 1: syntax error: unexpected redirection
复制代码

论坛徽章:
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
发表于 2014-02-26 09:53 |显示全部楼层
本帖最后由 关阴月飞 于 2014-02-26 09:54 编辑

回复 19# l3lf


      哈哈,我犯了个低级错误,脚本第一行应该是  #!/bin/bash

    以后有些东西还是不要照抄呀,很多东西还是需要自己留意一下的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP