免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何获取txt指定内容并执行? [复制链接]

论坛徽章:
0
发表于 2019-04-02 09:37 |显示全部楼层
有一个123.txt内容是



ip6tnl0  DOWN                     0.0.0.0/0   0x00000080 00:00:00:00:00:00
wlan0    UP                               192.168.0.102/24  0x00001043 18:aa:bb:f0:4d:f8
tunl0    DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00




想用批处理,执行ping   192.168.0.102









另一个 456.txt的内容是

wlan0     Link encap:UNSPEC  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: feaa::2ebb:31ff:feec:3dcc/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1



想用批处理,执行ping   192.168.0.100  

不知道该如何写,请教。


论坛徽章:
0
发表于 2019-04-02 13:59 |显示全部楼层
本帖最后由 jzsjm1002 于 2019-04-02 14:03 编辑

回复 1# 277702021

awk version: GNU Awk 4.0.2
假设123.TXT 456.TXT都在/mnt/awk/目录下
  1. [root@vh120 awk]# cat test.awk
  2. #!/usr/bin/awk -f
  3. #

  4. function intercept(a1){
  5.   while(getline < a1 > 0)
  6.     if(/\/24|[0-9]\s*B/){
  7.       return ip=gensub(/.*(\s+|:)((\.?[0-9]{1,3}){4})(\s*B|\/24).*/,"\\2","1",$0)
  8.       break
  9.     }
  10. }

  11. function ping(a1){
  12.   "ping -c 1 -w 1 "a1" &> /dev/null;echo $?" | getline i
  13.   return i
  14. }

  15. BEGIN{
  16.   path="/mnt/awk/*.TXT"
  17.   while("ls "path | getline > 0){
  18.     ip=intercept($0)
  19.     ret=ping(ip)
  20.     close(ping(ip))
  21.     printf "%s\t%s\n",ip,ret==0?"available":"unavailable"
  22.   }
  23.   close("ls "path)
  24. }

  25. [root@vh120 awk]# ./test.awk
  26. 192.168.0.102        unavailable
  27. 10.1.26.121          available
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP