免费注册 查看新帖 |

Chinaunix

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

12及13楼方案结贴。。。如何把点分十进制的掩码转化为 缩写形式 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-10-20 11:52 |只看该作者
又遭遇问题了。。。ipcalc 不支持直接批量输入,重定向和管道也不ok,所以用了个依次按行读的方式来操作。。。
  1. awk getline ip文件 | while read line ;
  2. do
  3. awk '{printf $1"/"}';
  4. ipcalc -p $line | cut -c8-;
  5. done
复制代码
预期是读取每行的时候都执行
awk '{printf $1"/"}';
ipcalc -p $line | cut -c8-;

这两句,前者取出ip部分,后后者配上掩码。。。结果运行出来的结果却仿佛只有第一句每次执行了,第二句是在最后一次读行才执行一次。。。

源文件

202.127.0.0 255.255.192.0
202.127.128.0 255.255.128.0

执行结果

202.127.0.0/202.127.128.0/25

无法达到

202.127.0.0/26202.127.128.0/25

这样的效果(先没考虑换行问题)

论坛徽章:
0
12 [报告]
发表于 2010-10-20 12:13 |只看该作者
又换了种方式。。。
  1. awk '{cmd="ipcalc -p "$0"| cut -c8- ";printf $1"\/";system( cmd )}' ip文件名
复制代码
这样终于搞定了,呵呵呵

论坛徽章:
0
13 [报告]
发表于 2010-10-20 12:13 |只看该作者
while read v1 v2
do
  ipcalc -p $v1 $v2 | awk -F= -v v=$v1 '{print v"/"$2}'
done < file

论坛徽章:
0
14 [报告]
发表于 2010-10-20 12:15 |只看该作者
while read v1 v2
do
  ipcalc -p $v1 $v2 | awk -F= -v v=$v1 '{print v"/"$2}'
done < file
ywlscpl 发表于 2010-10-20 12:13



    谢谢 ywlscpl 兄~~~ 感谢,又更加深刻地学习了。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP