免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6372 | 回复: 19
打印 上一主题 下一主题

[文本处理] awk来分类统计各个范围内的符合条件的数量 [复制链接]

论坛徽章:
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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-01 21:04 |只看该作者 |倒序浏览
      首先祝各位国庆快乐,现在来请教个问题,现在下边的文本内容如下,现在要统计 node开头的行里面3个范围(53,102),(103,122),(223,376)里面有多少个active和down的,注意53-102,103-122,223-376这3个范围里可能有没出现在文本里,比如node-245.xxxx-yy.com。 注意某些主机名字是node-xxx,有的是node-NNN.xxx-yy.com。

同时要统计   renderG开头的行的'1-202','167-181(注意这里的167-181是需要排除掉的,其实就是1-166,182-202这2个当做一个整体'这个范围里active/down的个数, 还有 '167-204','181-202'(同理排除181-202,然后当做一个整体( 这个里的active/down的个数。范围里的主机未必在文本出现。

这个问题用python处理非常容易理解。就把文本$1,$4放字典里面,然后把既定范围放list, 判断list是否在dict的key里面,再就放一个新的dict,最后统计新的dict的active/down的数量,最后清空dict.
  1. #!/usr/bin/env python

  2. import subprocess

  3. spec ={'node': ((53,102),(103,122),(223,376)),

  4.         'renderG' : (('1-166','181-202'),('167-180','203-204'))
  5. }

  6. cmd ="qbhosts | awk '/node/||/renderG/'"

  7. output = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).communicate()[0]

  8. d ={}

  9. for i in output.splitlines():

  10.     items = i.split()
  11.     if not items[0].endswith("xxx.com"):
  12.         items[0]=items[0]+".xxx.com"
  13.     d[items[0]] = items[3]

  14. for k,v in spec.items() :

  15.                 for  i in v:
  16.                         # set default value for m1,m2.
  17.                         m1=m2=None

  18.                         if type(i[0]) == str or type(i[1]) == str :

  19.                                 begin = i[0].split("-")[0]
  20.                                 m1 = i[0].split("-")[1]
  21.                                 m2 = i[1].split("-")[0]
  22.                                 end = i[1].split("-")[1]
  23.                                 host = [ "%s-%03d.xxx.com" %(k,m ) for m in xrange(int(begin),int(end)+1) if m not in xrange(int(m1)+1,int(m2))]

  24.                         else :
  25.                                 begin,end = i[0],i[1]
  26.                                 host = [ "%s-%03d.xxx.com" %(k,m) for m in xrange(begin,end+1) ]
  27.                         #print "--------\n",host,"\n----------------"

  28.                         temp = {}

  29.                         for h in host :

  30.                                 if h in d.keys():
  31.                                         temp[h] = d[h]

  32.                                 #else : print "%s doesn't exist."%h

  33.                         act = len([k1 for k1,v1 in temp.items() if v1 =="active" ])
  34.                         down = len([k1 for k1,v1 in temp.items() if v1 =="down" ])
  35.                         # duplicate hostname node-347 and node-238

  36.                         if m1 and m2 :

  37.                                 print "\n%s[%03d-%03d,%03d-%03d].xxx.com have %d active node(s), %d down node(s)\n" % (k,int(begin),int(m1),int(m2),int(end),act,down)

  38.                         else:
  39.                                 print "\n%s[%03d-%03d].xxx.com have %d active node(s), %d down node(s)\n" % (k,int(begin),int(end),act,down)

  40.                         temp.clear()
复制代码
renderG-001.xxxx-yy.com     00:22:19:AE:97:90  10.7.16.1      active  1/1   /efx     G96
renderG-002.xxxx-yy.com     00:22:19:AE:97:9D  10.7.16.2      active  1/1   /efx     G96
renderG-003.xxxx-yy.com     00:22:19:AE:97:AA  10.7.16.3      active  1/1   /efx     G96
renderG-004.xxxx-yy.com     00:22:19:AE:97:B7  10.7.16.4      active  1/1   /efx     G96
renderG-005.xxxx-yy.com     00:22:19:AE:97:C4  10.7.16.5      active  1/1   /efx     G96
renderG-006.xxxx-yy.com     00:22:19:AE:971  10.7.16.6      active  1/1   /efx     G96
renderG-007.xxxx-yy.com     00:22:19:AE:97E  10.7.16.7      active  1/1   /efx     G96
renderG-008.xxxx-yy.com     00:22:19:AE:97:EB  10.7.16.8      active  1/1   /efx     G96
renderG-009.xxxx-yy.com     00:26:B9:28:47E  172.16.5.144   down    0/0   /efx     G96
renderG-009.xxxx-yy.com     00:22:19:C1:B9:0D  10.7.16.9      active  1/1   /efx     G96
renderG-009.xxxx-yy.com     00:26:B9:28:471  10.7.16.9      down    0/1   /efx     G96
renderG-010.xxxx-yy.com     00:22:19:AE:98:05  10.7.16.10     active  1/1   /efx     G96
renderG-011.xxxx-yy.com     00:22:19:AE:98:12  10.7.16.11     active  1/1   /efx     G96
renderG-012.xxxx-yy.com     00:22:19:AE:98:1F  10.7.16.12     active  1/1   /efx     G96
renderG-013.xxxx-yy.com     00:22:19:AE:98:2C  10.7.16.13     active  1/1   /efx     G96
renderG-014.xxxx-yy.com     00:22:19:AE:98:39  10.7.16.14     active  1/1   /efx     G96
renderG-015.xxxx-yy.com     00:22:19:AE:98:46  10.7.16.15     active  1/1   /efx     G96
renderG-016.xxxx-yy.com     00:22:19:AE:98:53  10.7.16.16     active  1/1   /efx     G96
renderG-017.xxxx-yy.com     00:26:B9:28:8F2  10.7.16.21     active  1/1   /efx     G96
renderG-018.xxxx-yy.com     00:26:B9:28:8FF  10.7.16.22     down    0/1   /efx     G96
renderG-019.xxxx-yy.com     00:26:B9:28:8F:C5  10.7.16.20     active  1/1   /efx     G96
renderG-020.xxxx-yy.com     00:26:B9:28:8F:B8  10.7.16.19     active  1/1   /efx     G96
renderG-021.xxxx-yy.com     00:26:B9:28:8F:AB  10.7.16.18     active  1/1   /efx     G96
renderG-022.xxxx-yy.com     00:26:B9:28:90:3A  10.7.16.29     active  1/1   /efx     G96
renderG-023.xxxx-yy.com     00:26:B9:28:90:2D  10.7.16.28     active  1/1   /efx     G96
renderG-024.xxxx-yy.com     00:26:B9:28:0F:73  10.7.16.24     active  1/1   /efx     G96
renderG-025.xxxx-yy.com     00:26:B9:28:90:47  10.7.16.30     active  1/1   /efx     G96
renderG-026.xxxx-yy.com     00:26:B9:28:90:20  10.7.16.27     active  1/1   /efx     G96
renderG-027.xxxx-yy.com     00:26:B9:28:90:13  10.7.16.26     active  1/1   /efx     G96
renderG-028.xxxx-yy.com     00:26:B9:28:90:54  10.7.16.31     active  1/1   /efx     G96
renderG-029.xxxx-yy.com     00:26:B9:28:90:06  10.7.16.25     active  1/1   /efx     G96
renderG-030.xxxx-yy.com     00:26:B9:28:90:61  10.7.16.32     active  1/1   /efx     G96
renderG-031.xxxx-yy.com     00:26:B9:28:8F:9E  10.7.16.17     active  1/1   /efx     G96
renderG-032.xxxx-yy.com     00:26:B9:28:8F:EC  10.7.16.23     active  1/1   /efx     G96
renderG-033.xxxx-yy.com     00:26:B9:28:54:FD  10.7.16.33     down    0/1   /efx     G96
renderG-034.xxxx-yy.com     00:26:B9:28:55:0A  10.7.16.34     active  1/1   /efx     G96
renderG-035.xxxx-yy.com     00:26:B9:28:55:17  10.7.16.35     active  1/1   /efx     G96
renderG-036.xxxx-yy.com     00:26:B9:28:55:24  10.7.16.36     active  1/1   /efx     G96
renderG-037.xxxx-yy.com     00:26:B9:28:55:31  10.7.16.37     active  1/1   /efx     G96
renderG-038.xxxx-yy.com     00:26:B9:28:55:3E  10.7.16.38     active  1/1   /efx     G96
renderG-039.xxxx-yy.com     00:26:B9:28:55:4B  10.7.16.39     active  1/1   /efx     G96
renderG-040.xxxx-yy.com     00:26:B9:28:55:58  10.7.16.40     active  1/1   /efx     G96
renderG-041.xxxx-yy.com     00:26:B9:28:55:65  10.7.16.41     active  1/1   /efx     G96
renderG-042.xxxx-yy.com     00:26:B9:28:55:72  10.7.16.42     active  1/1   /efx     G96
renderG-043.xxxx-yy.com     00:26:B9:28:55:7F  10.7.16.43     active  1/1   /efx     G96
renderG-044.xxxx-yy.com     00:26:B9:28:55:8C  10.7.16.44     active  1/1   /efx     G96
renderG-045.xxxx-yy.com     00:26:B9:28:55:99  10.7.16.45     active  1/1   /efx     G96
renderG-046.xxxx-yy.com     00:26:B9:28:55:A6  10.7.16.46     active  1/1   /efx     G96
renderG-047.xxxx-yy.com     00:26:B9:28:55:B3  10.7.16.47     active  1/1   /efx     G96
renderG-048.xxxx-yy.com     00:26:B9:28:55:C0  10.7.16.48     active  1/1   /efx     G96
renderG-049.xxxx-yy.com     00:26:B9:28:0E:BD  10.7.16.49     active  1/1   /efx     G96
renderG-050.xxxx-yy.com     00:26:B9:28:0E:CA  10.7.16.50     active  1/1   /efx     G96
renderG-051.xxxx-yy.com     00:26:B9:28:0E7  10.7.16.51     active  1/1   /efx     G96
renderG-052.xxxx-yy.com     00:26:B9:28:0E:E4  10.7.16.52     active  1/1   /efx     G96
renderG-054.xxxx-yy.com     00:26:B9:28:0E:FE  10.7.16.54     active  1/1   /efx     G96
renderG-055.xxxx-yy.com     00:26:B9:28:0F:0B  10.7.16.55     active  1/1   /efx     G96
renderG-056.xxxx-yy.com     00:26:B9:28:0F:18  10.7.16.56     active  1/1   /efx     G96
renderG-057.xxxx-yy.com     00:26:B9:28:0F:25  10.7.16.57     active  1/1   /efx     G96
renderG-058.xxxx-yy.com     00:26:B9:28:0F:32  10.7.16.58     active  1/1   /efx     G96
renderG-059.xxxx-yy.com     00:26:B9:28:0F:3F  10.7.16.59     active  1/1   /efx     G96
renderG-060.xxxx-yy.com     00:26:B9:28:0F:4C  10.7.16.60     active  1/1   /efx     G96
renderG-061.xxxx-yy.com     00:26:B9:28:0F:59  10.7.16.61     active  1/1   /efx     G96
renderG-062.xxxx-yy.com     00:26:B9:28:0F:66  10.7.16.62     active  1/1   /efx     G96
renderG-063.xxxx-yy.com     00:22:19:C1:B9:00  172.16.10.50   down    0/0   /efx     G96
renderG-063.xxxx-yy.com     00:22:19:C1:B9:41  172.16.5.83    active  1/1   /efx     G96
renderG-063.xxxx-yy.com     00:26:B9:28:47:C4  10.7.16.63     down    0/0   /efx     G96
renderG-064.xxxx-yy.com     00:26:B9:28:0F:80  10.7.16.64     active  1/1   /efx     G96
renderG-065.xxxx-yy.com     00:26:B9:28:C8:9C  10.7.16.65     active  1/1   /efx     G96
renderG-066.xxxx-yy.com     00:26:B9:28:C8:A9  10.7.16.66     active  1/1   /efx     G96
renderG-067.xxxx-yy.com     00:26:B9:28:C8:B6  10.7.16.67     active  1/1   /efx     G96
renderG-068.xxxx-yy.com     00:26:B9:28:C8:C3  10.7.16.68     active  1/1   /efx     G96
renderG-069.xxxx-yy.com     00:26:B9:28:C80  10.7.16.69     active  1/1   /efx     G96
renderG-070.xxxx-yy.com     00:26:B9:28:C8D  10.7.16.70     active  1/1   /efx     G96
renderG-071.xxxx-yy.com     00:26:B9:28:C8:EA  10.7.16.71     active  1/1   /efx     G96
renderG-072.xxxx-yy.com     00:26:B9:28:C8:F7  10.7.16.72     active  1/1   /efx     G96
renderG-073.xxxx-yy.com     00:26:B9:28:C9:04  10.7.16.73     active  1/1   /efx     G96
renderG-074.xxxx-yy.com     00:26:B9:28:C9:11  10.7.16.74     active  1/1   /efx     G96
renderG-075.xxxx-yy.com     00:26:B9:28:C9:1E  10.7.16.75     active  1/1   /efx     G96
renderG-076.xxxx-yy.com     00:26:B9:28:C9:2B  10.7.16.76     active  1/1   /efx     G96
renderG-077.xxxx-yy.com     00:26:B9:28:C9:38  10.7.16.77     active  1/1   /efx     G96
renderG-078.xxxx-yy.com     00:26:B9:28:C9:45  10.7.16.78     active  1/1   /efx     G96
renderG-079.xxxx-yy.com     00:26:B9:28:C9:52  10.7.16.79     active  1/1   /efx     G96
renderG-080.xxxx-yy.com     00:26:B9:28:C9:5F  10.7.16.80     active  1/1   /efx     G96
renderG-081.xxxx-yy.com     00:26:B9:28:88:69  10.7.16.81     down    0/1   /efx     G96
renderG-081.xxxx-yy.com     00:26:B9:280:1F  172.16.10.142  active  1/1   /efx     G96
renderG-082.xxxx-yy.com     00:26:B9:28:88:B7  10.7.16.87     down    0/1   /efx     G96
renderG-085.xxxx-yy.com     00:26:B9:28:88:90  10.7.16.84     down    0/1   /efx     G96
renderG-086.xxxx-yy.com     00:22:19:C1:B9:34  172.16.5.188   active  1/1   /efx     G96
renderG-087.xxxx-yy.com     00:26:B9:28:88:AA  172.16.5.31    down    0/1   /efx     G96
renderG-087.xxxx-yy.com     00:26:B9:28:88:EB  10.7.16.91     down    0/1   /efx     G96
renderG-088.xxxx-yy.com     00:26:B9:28:47:F8  10.7.16.88     down    0/1   /efx     G96
renderG-088.xxxx-yy.com     00:22:19:C1:B9:1A  172.16.10.2    active  1/1   /efx     G96
renderG-089.xxxx-yy.com     00:26:B9:28:89:05  10.7.16.93     down    0/1   /efx     G96
renderG-090.xxxx-yy.com     00:26:B9:28:88:F8  10.7.16.92     down    0/1   /efx     G96
renderG-091.xxxx-yy.com     00:26:B9:28:88:9D  10.7.16.85     down    0/1   /efx     G96
renderG-092.xxxx-yy.com     00:26:B9:28:89:12  172.16.5.202   down    0/1   /efx     G96
renderG-093.xxxx-yy.com     00:26:B9:28:88:76  10.7.16.82     down    0/1   /efx     G96
renderG-094.xxxx-yy.com     00:26:B9:28:88:DE  10.7.16.90     down    0/1   /efx     G96
renderG-095.xxxx-yy.com     00:26:B9:28:89:1F  10.7.16.95     down    0/1   /efx     G96
renderG-095.xxxx-yy.com     00:26:B9:28:88:83  10.7.16.83     down    0/1   /efx     G96
renderG-096.xxxx-yy.com     00:26:B9:28:89:2C  10.7.16.96     down    0/1   /efx     G96
renderG-096.xxxx-yy.com     00:26:B9:28:88:D1  10.7.16.89     down    0/1   /efx     G96
renderG-097.xxxx-yy.com     00:22:19:C1:B8:A5  172.16.5.164   down    0/1   /efx     G96
renderG-097.xxxx-yy.com     00:26:B9:28:47:4F  10.7.16.97     down    0/0   /efx     G96
renderG-098.xxxx-yy.com     00:26:B9:28:47:5C  10.7.16.98     down    0/0   /efx     G96
renderG-098.xxxx-yy.com     00:22:19:C1:B8:B2  172.16.10.38   down    0/1   /efx     G96
renderG-099.xxxx-yy.com     00:26:B9:28:47:69  10.7.16.99     down    0/0   /efx     G96
renderG-099.xxxx-yy.com     00:22:19:C1:B8:BF  172.16.10.89   active  1/1   /efx     G96
renderG-100.xxxx-yy.com     00:26:B9:28:47:76  10.7.16.100    down    0/0   /efx     G96
renderG-100.xxxx-yy.com     00:22:19:C1:B8:CC  172.16.5.113   active  1/1   /efx     G96
renderG-101.xxxx-yy.com     00:22:19:C1:B8:D9  172.16.10.36   active  1/1   /efx     G96
renderG-101.xxxx-yy.com     00:26:B9:28:47:83  10.7.16.101    down    0/1   /efx     G96
renderG-102.xxxx-yy.com     00:26:B9:28:47:9D  172.16.5.78    down    0/0   /efx     G96
renderG-102.xxxx-yy.com     00:22:19:C1:B8:E6  172.16.10.74   active  1/1   /efx     G96
renderG-102.xxxx-yy.com     00:26:B9:28:47:90  10.7.16.102    down    0/0   /efx     G96
renderG-103.xxxx-yy.com     00:26:B9:28:56:B2  10.7.16.103    active  1/1   /efx     G96
renderG-104.xxxx-yy.com     00:26:B9:28:56:BF  10.7.16.104    active  1/1   /efx     G96
renderG-105.xxxx-yy.com     00:26:B9:28:56:CC  10.7.16.105    active  1/1   /efx     G96
renderG-108.xxxx-yy.com     00:26:B9:28:56:F3  10.7.16.108    active  1/1   /efx     G96
renderG-109.xxxx-yy.com     00:26:B9:28:57:00  10.7.16.109    active  1/1   /efx     G96
renderG-110.xxxx-yy.com     00:26:B9:28:57:0D  10.7.16.110    active  1/1   /efx     G96
renderG-111.xxxx-yy.com     00:26:B9:28:57:1A  10.7.16.111    active  1/1   /efx     G96
renderG-112.xxxx-yy.com     00:26:B9:28:57:27  10.7.16.112    active  1/1   /efx     G96
renderG-113.xxxx-yy.com     00:26:B9:28:57:34  10.7.16.113    active  1/1   /efx     G96
renderG-114.xxxx-yy.com     00:26:B9:28:57:41  10.7.16.114    active  1/1   /efx     G96
renderG-115.xxxx-yy.com     00:26:B9:28:57:4E  10.7.16.115    active  1/1   /efx     G96
renderG-116.xxxx-yy.com     00:26:B9:28:57:5B  10.7.16.116    active  1/1   /efx     G96
renderG-117.xxxx-yy.com     00:26:B9:28:57:68  10.7.16.117    active  1/1   /efx     G96
renderG-118.xxxx-yy.com     00:26:B9:28:57:75  10.7.16.118    active  1/1   /efx     G96
renderG-119.xxxx-yy.com     00:22:19:C4:55:92  10.7.16.119    active  1/1   /efx     G96
renderG-120.xxxx-yy.com     00:22:19:C4:55:9F  10.7.16.120    active  1/1   /efx     G96
renderG-121.xxxx-yy.com     00:22:19:C4:55:AC  10.7.16.121    active  1/1   /efx     G96
renderG-122.xxxx-yy.com     00:22:19:C4:55:B9  10.7.16.122    active  1/1   /efx     G96
renderG-123.xxxx-yy.com     00:22:19:C4:55:C6  10.7.16.123    active  1/1   /efx     G96
renderG-124.xxxx-yy.com     00:22:19:C4:55:D3  10.7.16.124    active  1/1   /efx     G96
renderG-125.xxxx-yy.com     00:22:19:C4:55:E0  10.7.16.125    active  1/1   /efx     G96
renderG-126.xxxx-yy.com     00:22:19:C4:55:ED  10.7.16.126    active  1/1   /efx     G96
renderG-127.xxxx-yy.com     00:22:19:C4:55:FA  10.7.16.127    active  1/1   /efx     G96
renderG-128.xxxx-yy.com     00:22:19:C4:56:07  10.7.16.128    active  1/1   /efx     G96
renderG-129.xxxx-yy.com     00:22:19:C4:56:14  10.7.16.129    active  1/1   /efx     G96
renderG-130.xxxx-yy.com     00:22:19:C4:56:21  10.7.16.130    active  1/1   /efx     G96
renderG-131.xxxx-yy.com     00:22:19:C4:56:2E  10.7.16.131    active  1/1   /efx     G96
renderG-132.xxxx-yy.com     00:22:19:C4:56:3B  10.7.16.132    active  1/1   /efx     G96
renderG-133.xxxx-yy.com     00:22:19:C4:56:48  10.7.16.133    active  1/1   /efx     G96
renderG-134.xxxx-yy.com     00:22:19:C4:56:55  10.7.16.134    active  1/1   /efx     G96
renderG-135.xxxx-yy.com     00:26:B9:28:4F:81  10.7.16.135    active  1/1   /efx     G96
renderG-136.xxxx-yy.com     00:26:B9:28:4F:8E  10.7.16.136    active  1/1   /efx     G96
renderG-137.xxxx-yy.com     00:26:B9:28:4F:9B  10.7.16.137    active  1/1   /efx     G96
renderG-138.xxxx-yy.com     00:26:B9:28:4F:A8  10.7.16.138    active  1/1   /efx     G96
renderG-139.xxxx-yy.com     00:26:B9:28:4F:B5  10.7.16.139    active  1/1   /efx     G96
renderG-140.xxxx-yy.com     00:26:B9:28:4F:C2  10.7.16.140    active  1/1   /efx     G96
renderG-141.xxxx-yy.com     00:26:B9:28:4F:CF  10.7.16.141    active  1/1   /efx     G96
renderG-142.xxxx-yy.com     00:26:B9:28:4F:DC  10.7.16.142    active  1/1   /efx     G96
renderG-143.xxxx-yy.com     00:26:B9:28:4F:E9  10.7.16.143    active  1/1   /efx     G96
renderG-144.xxxx-yy.com     00:26:B9:28:4F:F6  10.7.16.144    down    0/0   /efx     G96
renderG-144.xxxx-yy.com     00:22:19:C1:B9:68  172.16.10.48   active  1/1   /efx     G96
renderG-145.xxxx-yy.com     00:26:B9:28:50:03  10.7.16.145    active  1/1   /efx     G96
renderG-146.xxxx-yy.com     00:26:B9:28:50:10  10.7.16.146    active  1/1   /efx     G96
renderG-147.xxxx-yy.com     00:26:B9:28:50:1D  10.7.16.147    active  1/1   /efx     G96
renderG-148.xxxx-yy.com     00:26:B9:28:50:2A  10.7.16.148    active  1/1   /efx     G96
renderG-149.xxxx-yy.com     00:26:B9:28:50:37  10.7.16.149    active  1/1   /efx     G96
renderG-150.xxxx-yy.com     00:26:B9:28:50:44  10.7.16.150    active  1/1   /efx     G96
renderG-151.xxxx-yy.com     00:26:B9:28:A1:96  10.7.16.151    active  1/1   /efx     G96
renderG-152.xxxx-yy.com     00:26:B9:28:A1:A3  10.7.16.152    active  1/1   /efx     G96
renderG-153.xxxx-yy.com     00:26:B9:28:A1:B0  10.7.16.153    active  1/1   /efx     G96
renderG-154.xxxx-yy.com     00:26:B9:28:A1:BD  10.7.16.154    active  1/1   /efx     G96
renderG-155.xxxx-yy.com     00:26:B9:28:A1:CA  10.7.16.155    active  1/1   /efx     G96
renderG-156.xxxx-yy.com     00:26:B9:28:A1:D7  10.7.16.156    active  1/1   /efx     G96
renderG-157.xxxx-yy.com     00:26:B9:28:A1:E4  10.7.16.157    active  1/1   /efx     G96
renderG-158.xxxx-yy.com     00:26:B9:28:A1:F1  10.7.16.158    active  1/1   /efx     G96
renderG-159.xxxx-yy.com     00:26:B9:28:A1:FE  10.7.16.159    active  1/1   /efx     G96
renderG-160.xxxx-yy.com     00:26:B9:28:A2:0B  10.7.16.160    active  1/1   /efx     G96
renderG-161.xxxx-yy.com     00:26:B9:28:A2:18  10.7.16.161    active  1/1   /efx     G96
renderG-162.xxxx-yy.com     00:26:B9:28:A2:25  10.7.16.162    active  1/1   /efx     G96
renderG-163.xxxx-yy.com     00:26:B9:28:A2:32  10.7.16.163    active  1/1   /efx     G96
renderG-164.xxxx-yy.com     00:26:B9:28:A2:3F  10.7.16.164    active  1/1   /efx     G96
renderG-165.xxxx-yy.com     00:26:B9:28:A2:4C  10.7.16.165    active  1/1   /efx     G96
renderG-166.xxxx-yy.com     00:26:B9:28:A2:59  10.7.16.166    active  1/1   /efx     G96
renderG-167.xxxx-yy.com     00:25:90:1B:1E:04  10.7.21.1      down    0/1   /efx     G96
renderG-167.xxxx-yy.com     00:26:B9:28:D0:46  172.16.10.86   down    0/0   /efx     G96
renderG-167.xxxx-yy.com     00:26:B9:28:CF:F8  172.16.5.159   active  1/1   /efx     G96
renderG-168.xxxx-yy.com     00:26:B9:28:D0:39  172.16.10.149  active  1/1   /efx     G96
renderG-168.xxxx-yy.com     00:25:90:1D:02:52  10.7.21.2      down    0/0   /efx     G96
renderG-169.xxxx-yy.com     00:25:90:1D:CD:84  10.7.21.3      down    0/1   /efx     G96
renderG-169.xxxx-yy.com     00:26:B9:28:CF:DE  172.16.5.49    active  1/1   /efx     G96
renderG-170.xxxx-yy.com     00:25:90:1B:15:78  10.7.21.4      down    0/1   /efx     G96
renderG-170.xxxx-yy.com     00:26:B9:28:CF:EB  172.16.5.71    active  1/1   /efx     G96
renderG-171.xxxx-yy.com     00:25:90:1C:0F:A8  10.7.21.5      down    0/1   /efx     G96
renderG-171.xxxx-yy.com     00:26:B9:28:CF:B7  172.16.10.44   active  1/1   /efx     G96
renderG-172.xxxx-yy.com     00:25:90:1B:1D:EC  10.7.21.6      down    0/1   /efx     G96
renderG-173.xxxx-yy.com     00:25:90:1D:07:FC  10.7.21.7      down    0/1   /efx     G96
renderG-173.xxxx-yy.com     00:26:B9:28:CF:9D  172.16.10.184  down    0/0   /efx     G96
renderG-174.xxxx-yy.com     00:26:B9:28:D0:60  172.16.5.94    down    0/1   /efx     G96
renderG-174.xxxx-yy.com     00:25:90:1F:7B:48  10.7.21.8      down    0/1   /efx     G96
renderG-175.xxxx-yy.com     00:25:90:1D:CD:E4  10.7.21.9      down    0/1   /efx     G96
renderG-176.xxxx-yy.com     00:25:90:1D:04:20  10.7.21.10     down    0/1   /efx     G96
renderG-176.xxxx-yy.com     00:26:B9:28:D0:05  172.16.5.14    active  1/1   /efx     G96
renderG-177.xxxx-yy.com     00:25:90:1B:1E:06  10.7.21.11     down    0/1   /efx     G96
renderG-177.xxxx-yy.com     00:26:B9:28:CF:AA  172.16.5.112   active  1/1   /efx     G96
renderG-178.xxxx-yy.com     00:25:90:1D:02:54  10.7.21.12     down    0/1   /efx     G96
renderG-179.xxxx-yy.com     00:25:90:1D:CD:86  10.7.21.13     down    0/1   /efx     G96
renderG-179.xxxx-yy.com     00:26:B9:28:D0:12  172.16.10.148  active  1/1   /efx     G96
renderG-180.xxxx-yy.com     00:26:B9:28:CF:C4  172.16.10.43   active  1/1   /efx     G96
renderG-180.xxxx-yy.com     00:25:90:1B:15:7A  10.7.21.14     down    0/1   /efx     G96
renderG-180.xxxx-yy.com     00:26:B9:28:D0:53  172.16.10.151  down    0/0   /efx     G96
renderG-181.xxxx-yy.com     00:25:90:1C:0F:AA  10.7.16.167    down    0/0   /efx     G96
renderG-181.xxxx-yy.com     00:26:B9:28:D0:2C  172.16.5.101   active  1/1   /efx     G96
renderG-182.xxxx-yy.com     00:26:B9:28:CF:D1  172.16.5.107   active  1/1   /efx     G96
renderG-182.xxxx-yy.com     00:25:90:1B:1D:EE  10.7.16.168    down    0/0   /efx     G96
renderG-183.xxxx-yy.com     00:22:19:C4:20:1B  10.7.16.169    active  1/1   /efx     G96
renderG-184.xxxx-yy.com     00:22:19:C4:20:28  10.7.16.170    active  1/1   /efx     G96
renderG-185.xxxx-yy.com     00:22:19:C4:20:35  10.7.16.171    active  1/1   /efx     G96
renderG-186.xxxx-yy.com     00:22:19:C4:20:42  10.7.16.172    active  1/1   /efx     G96
renderG-187.xxxx-yy.com     00:22:19:C4:20:4F  10.7.16.173    active  1/1   /efx     G96
renderG-188.xxxx-yy.com     00:22:19:C4:20:5C  10.7.16.174    active  1/1   /efx     G96
renderG-189.xxxx-yy.com     00:22:19:C4:20:69  10.7.16.175    active  1/1   /efx     G96
renderG-190.xxxx-yy.com     00:22:19:C4:20:76  10.7.16.176    active  1/1   /efx     G96
renderG-191.xxxx-yy.com     00:22:19:C4:20:83  10.7.16.177    active  1/1   /efx     G96
renderG-192.xxxx-yy.com     00:22:19:C4:20:90  10.7.16.178    active  1/1   /efx     G96
renderG-193.xxxx-yy.com     00:22:19:C4:20:9D  10.7.16.179    active  1/1   /efx     G96
renderG-194.xxxx-yy.com     00:22:19:C4:20:AA  10.7.16.180    active  1/1   /efx     G96
renderG-195.xxxx-yy.com     00:22:19:C4:20:B7  10.7.16.181    active  1/1   /efx     G96
renderG-196.xxxx-yy.com     00:22:19:C4:20:C4  10.7.16.182    active  1/1   /efx     G96
renderG-197.xxxx-yy.com     00:22:19:C4:20:D1  10.7.16.183    active  1/1   /efx     G96
renderG-198.xxxx-yy.com     00:22:19:C4:20:DE  10.7.16.184    active  1/1   /efx     G96
renderG-199.xxxx-yy.com     00:22:19:C1:B9:4E  172.16.5.62    down    0/1   /efx     G96
renderG-200.xxxx-yy.com     00:22:19:C1:B8:F3  172.16.10.75   active  1/1   /efx     G96

node-244.xxxx-yy.com        04:7D:7B:87:0B:8C  10.7.1.22      active  1/1   /lgt     G128
node-246.xxxx-yy.com        04:7D:7B:B0:66:C1  10.7.1.24      down    0/1   /lgt     G128
node-247.xxxx-yy.com        04:7D:7B:B0:65:3E  10.7.1.25      active  1/1   /lgt     G128
node-248.xxxx-yy.com        04:7D:7B:87:0B:F2  10.7.1.26      active  1/1   /lgt     G128
node-249.xxxx-yy.com        04:7D:7B:87:13:5C  10.7.1.27      active  1/1   /lgt     G128
node-250.xxxx-yy.com        04:7D:7B:B0:69:31  10.7.1.28      active  1/1   /lgt     G128
node-251.xxxx-yy.com        04:7D:7B:B0:6B:5F  10.7.1.29      active  1/1   /lgt     G96
node-252.xxxx-yy.com        08:9E:01:93:26:26  10.7.1.30      active  1/1   /lgt     G128
node-253                    04:7D:7B:B0:69:1F  10.7.1.31      active  1/1   /lgt     G128
node-254.xxxx-yy.com        04:7D:7B:B0:66:79  10.7.1.32      active  1/1   /lgt     G128
node-255                    04:7D:7B:87:09:25  10.7.1.33      active  1/1   /lgt     G128
node-256                    04:7D:7B:87:0C:7F  10.7.1.34      active  1/1   /lgt     G128
node-257                    04:7D:7B:87:04:24  10.7.1.35      active  1/1   /lgt     G128
node-258                    04:7D:7B:87:0E:80  10.7.1.36      active  1/1   /lgt     G128
node-259                    04:7D:7B:B0:64:CC  10.7.1.37      active  1/1   /lgt     G128
node-260                    08:9E:01:F7:4F:A4  10.7.1.38      active  1/1   /lgt     G128
node-261                    04:7D:7B:87:10:95  10.7.1.39      active  1/1   /lgt     G128
node-262                    04:7D:7B:87:17:3D  10.7.1.40      active  1/1   /lgt     G128
node-263                    04:7D:7B:87:11:1F  10.7.1.41      active  1/1   /lgt     G128
node-264                    04:7D:7B:B0:63:CD  10.7.1.42      active  1/1   /lgt     G128
node-265.xxxx-yy.com        04:7D:7B:87:07:33  10.7.1.43      down    0/0   /lgt     G96
node-266                    04:7D:7B:87:04:6C  10.7.1.44      active  1/1   /lgt     G128
node-267                    04:7D:7B:87:08:14  10.7.1.45      active  1/1   /lgt     G128
node-268                    04:7D:7B:87:0F:B1  10.7.1.46      active  1/1   /lgt     G128
node-269                    04:7D:7B:B0:67:C9  10.7.1.47      active  1/1   /lgt     G48
node-270                    04:7D:7B:87:15:87  172.16.10.10   active  1/1   /lgt     G96
node-271                    04:7D:7B:87:18:E7  10.7.1.49      active  1/1   /lgt     G96
node-272                    04:7D:7B:87:14:6D  10.7.1.50      active  1/1   /lgt     G128
node-273                    04:7D:7B:87:19:68  10.7.1.51      active  1/1   /lgt     G128
node-275                    04:7D:7B:B0:62:9E  10.7.1.53      active  1/1   /lgt     G128
node-276                    04:7D:7B:B0:68:C8  10.7.1.54      active  1/1   /lgt     G128
node-277                    04:7D:7B:B0:66:88  10.7.1.55      active  1/1   /lgt     G128
node-278                    04:7D:7B:B0:67:AE  10.7.1.56      active  1/1   /lgt     G128
node-279                    04:7D:7B:B0:64:D2  10.7.1.57      active  1/1   /lgt     G128
node-280                    04:7D:7B:B0:69:9A  10.7.1.58      active  1/1   /lgt     G128
node-281                    04:7D:7B:B0:66:37  10.7.1.59      active  1/1   /lgt     G96
node-282                    04:7D:7B:87:16:17  10.7.1.60      active  1/1   /lgt     G128
node-283                    04:7D:7B:B0:63:B5  10.7.1.61      active  1/1   /lgt     G128
node-284                    04:7D:7B:87:18:09  10.7.1.62      active  1/1   /lgt     G128
node-285                    04:7D:7B:A5:A7:AB  10.7.1.63      active  1/1   /lgt     G128
node-286                    04:7D:7B:B0:5E:15  10.7.1.64      active  1/1   /lgt     G96
node-287                    04:7D:7B:B0:60:BE  10.7.1.65      active  1/1   /lgt     G128
node-288                    04:7D:7B:B0:63:85  10.7.1.66      active  0/1   /lgt     G96
node-289                    04:7D:7B:B0:68:80  10.7.1.67      active  0/1   /lgt     G96
node-290                    04:7D:7B:B0:6D:24  10.7.1.68      active  1/1   /lgt     G96
node-291                    04:7D:7B:87:08:E9  10.7.1.69      down    0/0   /lgt     G96
node-292                    04:7D:7B:B0:66:A3  10.7.1.70      active  0/1   /lgt     G96
node-293                    04:7D:7B:B0:66:1F  10.7.1.71      active  0/1   /lgt     G96
node-294                    04:7D:7B:B0:65:11  10.7.1.72      active  1/1   /lgt     G96
node-295                    04:7D:7B:87:11:FD  10.7.1.73      active  1/1   /lgt     G96
node-296                    04:7D:7B:86:AD:4E  10.7.1.74      active  1/1   /lgt     G96
node-297                    04:7D:7B:B0:6A:9F  10.7.1.75      active  1/1   /lgt     G96
node-298                    04:7D:7B:87:16:E0  10.7.1.76      active  1/1   /lgt     G96
node-299                    04:7D:7B:B0:64:7E  10.7.1.77      active  1/1   /lgt     G96
node-300                    04:7D:7B:87:09:3A  10.7.1.78      active  1/1   /lgt     G96
node-301                    04:7D:7B:87:0D:A8  10.7.1.79      active  1/1   /lgt     G96
node-302                    04:7D:7B:B0:60:AF  10.7.1.80      active  1/1   /lgt     G96
node-303                    04:7D:7B:B0:58:D8  10.7.1.81      down    0/1   /lgt     G96
node-304                    04:7D:7B:B0:67:51  10.7.1.82      active  1/1   /lgt     G96
node-305                    04:7D:7B:B0:68:FB  10.7.1.83      active  1/1   /lgt     G96
node-306                    04:7D:7B:B0:64:9F  10.7.1.84      active  1/1   /lgt     G96
node-307                    04:7D:7B:B0:5F:C2  10.7.1.85      down    0/0   /lgt     G48
node-308                    04:7D:7B:87:05:C2  10.7.1.86      down    0/1   /lgt     G96
node-309                    04:7D:7B:87:0E:83  10.7.1.87      active  1/1   /lgt     G96
node-310                    04:7D:7B:87:08:80  10.7.1.88      active  1/1   /lgt     G96
node-311                    04:7D:7B:87:15:D8  10.7.1.89      active  1/1   /lgt     G96
node-312                    04:7D:7B:B0:63:C1  10.7.1.90      active  1/1   /lgt     G96
node-313                    04:7D:7B:B0:66:A9  10.7.1.91      active  1/1   /lgt     G96
node-314                    04:7D:7B:B0:64:C6  10.7.1.92      active  1/1   /lgt     G96
node-315                    04:7D:7B:87:17:F1  10.7.1.93      active  1/1   /lgt     G96
node-316                    04:7D:7B:87:06:5E  10.7.1.94      active  1/1   /lgt     G96
node-317                    04:7D:7B:67:0F:37  10.7.1.95      active  1/1   /lgt     G96
node-318                    04:7D:7B:87:04:F3  10.7.1.96      active  1/1   /lgt     G96
node-319                    04:7D:7B:B0:65:17  10.7.1.97      down    0/0   /lgt     G96
node-320                    04:7D:7B:B0:65:68  10.7.1.98      active  1/1   /lgt     G96
node-321                    04:7D:7B:B0:67:54  10.7.1.99      active  1/1   /lgt     G96
node-322                    04:7D:7B:B0:61:84  10.7.1.100     active  1/1   /lgt     G96
node-323                    04:7D:7B:86:A5:85  10.7.1.101     active  1/1   /lgt     G96
node-324                    04:7D:7B:B0:63:6A  10.7.1.102     active  1/1   /lgt     G96
node-325                    04:7D:7B:B0:59:14  10.7.1.103     active  1/1   /lgt     G96
node-326                    04:7D:7B:B0:66:D3  10.7.1.104     active  1/1   /lgt     G96
node-327                    04:7D:7B:87:16:62  10.7.1.105     active  1/1   /lgt     G96
node-328                    04:7D:7B:B0:6D:2A  10.7.1.106     down    0/0   /lgt     G96
node-329                    04:7D:7B:6E:08:43  10.7.1.107     active  1/1   /lgt     G96
node-330                    04:7D:7B:87:05:71  10.7.1.108     active  1/1   /lgt     G96
node-331                    04:7D:7B:B0:62:FE  10.7.1.109     active  1/1   /lgt     G96
node-332                    04:7D:7B:87:15:E7  10.7.1.110     active  1/1   /lgt     G96
node-333                    04:7D:7B:87:06:34  10.7.1.111     down    0/0   /lgt     G96
node-334                    04:7D:7B:87:0B:23  10.7.1.112     active  1/1   /lgt     G96
node-335                    04:7D:7B:87:0A:93  10.7.1.113     active  1/1   /lgt     G96
node-336                    04:7D:7B:87:0F:FF  10.7.1.114     active  1/1   /lgt     G96
node-337                    04:7D:7B:B0:6D:03  10.7.1.115     active  0/0   /lgt     G96


附上awk的,思路应该没问题,但结果不对,比较难debug。(只对renderG的,这个完成了node很容易加,就是if/else )

awk 'BEGIN{FS="[- ]+"


a["renderG"]= "1 202 167 180 | 167 204 181 202"


} /^node/ || /^renderG/{ if($5 !~/[a-zA-Z]+/)b[$2"-"$1]=$6 ;else b[$2"-"$1]=$5 ;c[$2"-"$1]=$1}


END{   



for(i in a){        

                        len = split(a,m,"|"   # 1 202 167 180 和167...204


                        for(t=1;t<=len;t++)

                                            {        split(m[t],x)   


                                                        for(f=x[1];f<=x[2];f++) temp[f] = i


                                                        for(n=x[3];n<=x[4];n++)  delete temp[n]
               
                                                        for(host in b) {
                  
                                                                                for (Number in temp)

                                                                                if(host +0 == Number && i ==c[host] )
                                               
                                                                                count++
                                                       
                                                           }
                                    print x[1],x[4],count
                                       
                                                delete temp ;count =0

                           }

         }
                 
}'

但awk就很麻烦了,我考虑用python这种思路,把范围存到数组a来做index, value是renderG和node,然后把文本内容放数组b, key是$1(node-xxx/renderG-xxx),value是active/down, 然后把a的既定范围和b比较,若存在就计时器放数temp, 循环完毕,统计temp,然后删除,但涉及到3层以上嵌套循环,比较难以理解,尤其是代码里面{}的位置,所以我的awk也没办法完成,各位大拿有什么好的办法吗?

论坛徽章:
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
2 [报告]
发表于 2015-10-01 21:10 |只看该作者
XX, 可能自己太固定思维了,应该把那个既定好的范围比如(53,102),(103,122),(223,376) 等 放文件b里面,这样省去了处理,直接NR==FNR, NR>FNR, END来比较,文件b应该是

node 53,102 .....
renderG ....

抽空写个试试看。否则处理这个范围,太麻烦了。

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
3 [报告]
发表于 2015-10-01 22:18 |只看该作者
本帖最后由 haooooaaa 于 2015-10-01 22:39 编辑

写了一个, 测试似乎还行。 就是有点恶心
  1. BEGIN{
  2.     total["node"][1]=53
  3.     total["node"][2]=102
  4.     total["node"][3]=103
  5.     total["node"][4]=122
  6.     total["node"][5]=223
  7.     total["node"][6]=376

  8.     total["renderG"][1]=1
  9.     total["renderG"][2]=167
  10.     total["renderG"][3]=181
  11.     total["renderG"][4]=202
  12. }
  13. /^node/||/^renderG/{
  14.     split($1,t,"-")
  15.     for(i=1;i<7;i+=2){
  16.         if(+t[2]>total[t[1]][i] && +t[2]<total[t[1]][i+1] && total[t[1]][i+1]){
  17.             total[t[1]][$(NF-3)]++
  18.             break
  19.         }
  20.     }
  21. }
  22. END{
  23.     for(i in total){
  24.         for(j in total[i]){
  25.             if(+j==0){
  26.                 print i,j,total[i][j]
  27.             }
  28.         }
  29.     }
  30. }
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2015-10-02 00:09 |只看该作者
回复 1# expert1


    既然有了 Python 版本,干吗还要用 awk 再来一次?

论坛徽章:
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
5 [报告]
发表于 2015-10-02 06:00 |只看该作者
回复 4# MMMIX

目测是来出题的,按理说python更好维护吧。


   

论坛徽章:
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
6 [报告]
发表于 2015-10-02 09:28 |只看该作者
回复 4# MMMIX


    纯爱好,刚开始想awk,最后发现awk做不出来,只是不服 来请教大家。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2015-10-02 10:09 |只看该作者
本帖最后由 MMMIX 于 2015-10-02 11:02 编辑

回复 6# expert1


    awk 实现完全没有问题,比较麻烦而已。

另外,不论是哪种实现,最好先把过滤条件处理一遍,把能合并的合并,有冲突的提前警告,这样一来可以提高效率,二来可以发现潜在错误,三来也可以简化后面的实现。

论坛徽章:
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
8 [报告]
发表于 2015-10-02 10:32 |只看该作者
本帖最后由 jason680 于 2015-10-02 10:36 编辑

回复 6# expert1


$ cat conf.ini
node 53 102
node 103 122
node 223 376
renderG 1 166 181 202
renderG 167 180 203 204

$ awk 'function node(n,ad){return(aCnt[n,ad]+0" "ad" node(s)")}BEGIN{while("cat conf.ini" | getline){cnt++;msg=$1;for(n=2;n<NF;n+=2){msg=sprintf("%s[%03d-%03d]",msg,$n,$(n+1));for(c=$n;c<=$(n+1);c++)host[$1,c]=cnt}aCnt[cnt,"msg"]=msg}}match($0,/(node|renderG)-([0-9]+)/,a){aCnt[host[a[1],a[2]+0],$4]++}END{for(n=1;n<=cnt;n++)print aCnt[n,"msg"],"have",node(n,"active")", "node(n,"down")}' FILE
node[053-102] have 0 active node(s), 0 down node(s)
node[103-122] have 0 active node(s), 0 down node(s)
node[223-376] have 83 active node(s), 9 down node(s)
renderG[001-166][181-202] have 165 active node(s), 35 down node(s)
renderG[167-180][203-204] have 9 active node(s), 18 down node(s)


   

论坛徽章:
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
9 [报告]
发表于 2015-10-02 12:19 |只看该作者
回复 8# jason680


    仁兄真高手,谢谢,这个正合我意,也顺带学习,这种把范围放到新文件的,的确简化了很多任务啊。

论坛徽章:
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
10 [报告]
发表于 2015-10-05 10:58 |只看该作者
回复 3# haooooaaa


    gawk 4.0以上支持的吧? 我没环境测试,不过看了,数据结构很高级,适合解决这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP