免费注册 查看新帖 |

Chinaunix

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

有一awk问题请教,求各位大侠指导 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-24 15:46 |只看该作者 |倒序浏览
本帖最后由 linkejin 于 2011-01-24 15:47 编辑

我想对pclint的输出格式进行统计处理,其输出是这样的:

--- Module:  a.c
a.c    12      Warning 570:
a.c    13      Warning 440:

--- Module:  b.c
b.c    13      Warning 570:
with  a.c
b.c    22      Error 570:
b.c    33      Error 570:


我想统计各个c文件的告警次数,象a.c的话就是两次, b.c就是三次,--- Module:  b.c下面的a.c不参加统计。 我的想法是当发现Module字段时候,将a.c作为一个匹配字段,去匹配到下一个
Module之前的所有行,如果匹配上,那么count【a.c】++。现在的问题是我如果写匹配字符串。我试着使用awk中的一个变量来存储a.c,但是不知道怎么匹配。

论坛徽章:
0
2 [报告]
发表于 2011-01-24 16:08 |只看该作者
你还用pclint,呵呵

awk不会,可以试试sed的,
去看看tim兄的帖子中的第二节"二、记数":
http://bbs.chinaunix.net/thread-1762006-1-1.html

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2011-01-24 16:13 |只看该作者
本帖最后由 yinyuemi 于 2011-01-24 16:14 编辑

回复 1# linkejin
如果格式固定的话
  1. echo "--- Module:  a.c
  2. a.c    12      Warning 570:
  3. a.c    13      Warning 440:

  4. --- Module:  b.c
  5. b.c    13      Warning 570:
  6. with  a.c
  7. b.c    22      Error 570:
  8. b.c    33      Error 570:" |awk '/Module/{label=$3}{if($1==label){count[label]=count[label]+1}}END{for(i in count) print i,count[i]}'
  9. a.c 2
  10. b.c 3
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2011-01-24 16:20 |只看该作者
你还用pclint,呵呵

awk不会,可以试试sed的,
去看看tim兄的帖子中的第二节"二、记数":
xiaopan3322 发表于 2011-01-24 16:08


这个,这个,还是awk吧,sed更难了

论坛徽章:
0
5 [报告]
发表于 2011-01-24 17:10 |只看该作者
回复 4# cjaizss


    原来可以用  ==来匹配啊,我晕,我一直以为awk里面匹配要用 $1 ~ //这种方式来匹配,是我孤陋寡闻了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP