免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
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
21 [报告]
发表于 2014-02-26 09:53 |只看该作者
本帖最后由 关阴月飞 于 2014-02-26 09:54 编辑

回复 19# l3lf


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

    以后有些东西还是不要照抄呀,很多东西还是需要自己留意一下的。

论坛徽章:
0
22 [报告]
发表于 2014-02-26 12:53 |只看该作者
回复 20# 关阴月飞
还是不能运行。。莫非是我系统的问题
  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.10.6
  13. 172.16.0.5-172.16.0.10
  14. root@Openwrt:/tmp# sh qq
  15. qq: line 1: syntax error: unexpected redirection
  16. root@Openwrt:/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
23 [报告]
发表于 2014-02-26 12:59 |只看该作者
回复 21# l3lf


请不要用sh xx.sh 这种方法运行脚本会损失很多bash特性,正确的方法应该是:
bash xx.sh

或者最好这样运行:
chmod 755 xx.sh
./xx.sh

论坛徽章:
0
24 [报告]
发表于 2014-02-26 16:02 |只看该作者
关哥能把程序写全吗?思路很好。回复 7# 关阴月飞


   

论坛徽章:
0
25 [报告]
发表于 2014-02-26 22:30 |只看该作者
回复 22# 关阴月飞

openwrt下./qq.sh ,
  1. root@Openwrt:/tmp# cat qq.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@Openwrt:/tmp# ./qq.sh
  12. -ash: ./qq.sh: not found
复制代码
centos运行出错。。
  1. [root@centos tmp]# cat ip_list.txt
  2. 192.168.1.2-192.168.10.6
  3. 172.16.0.5-172.16.0.10
  4. [root@centos tmp]# cat qq.sh
  5. #!/bin/bash
  6. while read LINE
  7. do
  8. #将起止IP地址转为成数字:
  9. star=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
  10. end=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE##*-}"`
  11. #生成两个IP之间所有地址
  12. 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=.
  13. done < ip_list.txt
  14. [root@centos tmp]# ./qq.sh
  15. 192.168.17.128
  16. 172.16.1.16
  17. [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
26 [报告]
发表于 2014-02-27 10:22 |只看该作者
回复 24# l3lf


    邪门:

1. 把脚本执行过程贴出来看看:
    bash -x xx.sh

2. 确定一下ip_list.txt 的内容,格式是不是对的
   cat -A  ip_list.txt

论坛徽章:
0
27 [报告]
发表于 2014-02-27 17:36 |只看该作者
回复 25# 关阴月飞
  1. [root@centos tmp]# bash -x qq.sh
  2. + read LINE
  3. ++ awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  4. + star=3.23224e+09
  5. ++ awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  6. + end=3.23224e+09
  7. + seq 3.23224e+09 3.23224e+09
  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.17.128
  10. + read LINE
  11. ++ awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  12. + star=2.88673e+09
  13. ++ awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  14. + end=2.88673e+09
  15. + seq 2.88673e+09 2.88673e+09
  16. + 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=.
  17. 172.16.1.16
  18. + read LINE
  19. [root@centos tmp]# cat -A ip_list.txt
  20. 192.168.1.2-192.168.10.6$
  21. 172.16.0.5-172.16.0.10$
  22. [root@centos tmp]# ./qq.sh
  23. 192.168.17.128
  24. 172.16.1.16
  25. [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
28 [报告]
发表于 2014-02-27 18:41 |只看该作者
本帖最后由 关阴月飞 于 2014-02-27 18:44 编辑

回复 26# l3lf
你的系统版本是多少? awk版本是多少?
看看这两个命令的结果是不是也是科学计数法:
  1.   echo 192.168.1.2 |awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  2.    echo 192.168.10.6 |awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
复制代码
  1.   echo 192.168.1.2 |awk -F. '{printf "%.f\n",$1*256^3+$2*256^2+$3*256+$4}'
  2.    echo 192.168.10.6 |awk -F. '{printf  "%.f\n",$1*256^3+$2*256^2+$3*256+$4}'
复制代码

论坛徽章:
0
29 [报告]
发表于 2014-02-27 18:50 |只看该作者
本帖最后由 l3lf 于 2014-02-27 18:52 编辑

回复 27# 关阴月飞




Awk 3.1.5
CentOS release 5.5 (Final)

  1. [root@centos ~]#   echo 192.168.1.2 |awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  2. 3.23224e+09
  3. [root@centos ~]#    echo 192.168.10.6 |awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}'
  4. 3.23224e+09
  5. [root@centos ~]#   echo 192.168.1.2 |awk -F. '{printf "%.f\n",$1*256^3+$2*256^2+$3*256+$4}'
  6. 3232235778
  7. [root@centos ~]#    echo 192.168.10.6 |awk -F. '{printf  "%.f\n",$1*256^3+$2*256^2+$3*256+$4}'
  8. 3232238086
  9. [root@centos ~]#

复制代码

论坛徽章:
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
30 [报告]
发表于 2014-02-27 18:54 |只看该作者
回复 28# l3lf

把脚本中这两句:
star=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
end=`awk -F. '{print $1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE##*-}"`

改成这样:
star=`awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE%%-*}"`
end=`awk -F. '{printf "%.f",$1*256^3+$2*256^2+$3*256+$4}' <<<"${LINE##*-}"`
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP