免费注册 查看新帖 |

Chinaunix

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

[文本处理] 在某段内容中查找某个信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-01-03 21:55 |只看该作者 |倒序浏览
======EVENT======
header:
        event_id = bearer_update
        event_result = success
        time_hour = 0
        time_minute = 0
        time_second = 0
        time_millisecond = 21
        duration = 83
cause_protocol = gtpv2
======EVENT======
header:
        event_id = bearer_update
        event_result = success
        time_hour = 0
        time_minute = 0
        time_second = 0
        time_millisecond = 284
        duration = 77
cause_protocol = gtpv2
cause_code = request_
======EVENT======
在======EVENT======之间统计duration

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2017-01-03 22:57 |只看该作者
怎么个统计法?求和,求平均,,,

论坛徽章:
0
3 [报告]
发表于 2017-01-03 23:19 |只看该作者
sunzhiguolu 发表于 2017-01-03 22:57
怎么个统计法?求和,求平均,,,

统计time_hour =0的duration 的平均值

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2017-01-03 23:51 |只看该作者
回复 3# 老家的篱笆
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($flag, $sum, @aData) = (0, 0, ());
  5. while (<DATA>){
  6.     $flag = 1 if (/\A=/);
  7.     $flag = 0 if (/time_hour\s+=\s+(\d+)/ and $1);
  8.     push (@aData, $1) if ($flag and /duration\s+=\s+(\d+)/);
  9. }

  10. $sum += $_ for @aData;
  11. printf ("%.2f\n", $sum / @aData);

  12. __DATA__
  13. ======EVENT======
  14. header:
  15.         event_id = bearer_update
  16.         event_result = success
  17.         time_hour = 0
  18.         time_minute = 0
  19.         time_second = 0
  20.         time_millisecond = 21
  21.         duration = 83
  22. cause_protocol = gtpv2
  23. ======EVENT======
  24. header:
  25.         event_id = bearer_update
  26.         event_result = success
  27.         time_hour = 0
  28.         time_minute = 0
  29.         time_second = 0
  30.         time_millisecond = 284
  31.         duration = 77
  32. cause_protocol = gtpv2
  33. cause_code = request_
  34. ======EVENT======
复制代码



论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
5 [报告]
发表于 2017-01-04 09:08 |只看该作者

  1. awk '/time_hour\s*=\s*0\>/{f=1;i++}f&&/duration/{s+=$3;f=0}END{print i?s/i:""}'
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
6 [报告]
发表于 2017-01-04 10:32 |只看该作者
  1. [root@CentOS_6 experiment]# awk -F "=" -f test.awk test.txt
  2. 69.5
  3. [root@CentOS_6 experiment]# cat test.awk
  4. BEGIN{i=0;j=0}
  5. /header/,/cause_protocol/{
  6.   if("time_hour"==$1){
  7.     #printf $1 " " "\n"
  8.     if($2==0){i=1;++j}
  9.   }
  10.   if(i==1){
  11.     if("duration"==$1){array[j]=$2;i=0}
  12.   }
  13.   next
  14. }
  15. #END{printf array[1] " " array[2] "\n"}
  16. END{print (array[1]+array[2])/length(array)}
  17. [root@CentOS_6 experiment]# cat test.txt
  18. ======EVENT======
  19. header:
  20. event_id=bearer_update
  21. event_result=success
  22. time_hour=0
  23. time_minute=0
  24. time_second=0
  25. time_millisecond=21
  26. duration=83
  27. cause_protocol=gtpv2
  28. ======EVENT======
  29. header:
  30. event_id=bearer_update
  31. event_result=success
  32. time_hour=1
  33. time_minute=0
  34. time_second=0
  35. time_millisecond=284
  36. duration=77
  37. cause_protocol=gtpv2
  38. cause_code=request_
  39. ======EVENT======
  40. header:
  41. time_hour=0
  42. duration=56
  43. cause_protocol=gtpv2
  44. ======EVENT======
复制代码

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
7 [报告]
发表于 2017-01-04 10:48 |只看该作者
"EVENT"之间内容的格式是不是固定的?

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
8 [报告]
发表于 2017-01-04 13:42 |只看该作者
本帖最后由 zl624867243 于 2017-01-04 13:59 编辑

file文件如下:
  1. ======EVENT======
  2. header:
  3. event_id=bearer_update
  4. event_result=success
  5. time_hour=0
  6. time_minute=0
  7.   time_second=0
  8.   time_millisecond=21
  9.   duration=83
  10. cause_protocol=gtpv2
  11. ======EVENT======
  12. header:
  13. event_id=bearer_update
  14. event_result=success
  15. time_hour=1
  16. time_minute=0
  17. time_second=0
  18. time_millisecond=284
  19. duration=77
  20. cause_protocol=gtpv2
  21. cause_code=request_
  22. ======EVENT======
  23. header:
  24. event_id=bearer_update
  25. event_result=success
  26. time_hour=0
  27. time_minute=0
  28. time_second=0
  29. time_millisecond=284
  30. duration=56
  31. cause_protocol=gtpv2
  32. ======EVENT======
复制代码


处理脚本如下:
  1. #!/usr/bin/python
  2. #coding:utf8
  3. from __future__ import division
  4. import re

  5. f = open('file.txt','r')
  6. lt = f.readlines()
  7. num = len(lt)
  8. y=[]
  9. for i in range(0,num):
  10.         if lt[i].replace("\n","") == "time_hour=0":
  11.                 n = lt[i+4].replace("\n","").strip()
  12.                 m = re.findall(r'\d+',n)
  13.                 y.append(m)
  14. z=[]
  15. for x in y:
  16.         aa = int(x[0])
  17.         z.append(aa)

  18. print sum(z)/len(z)
  19. f.close()               

复制代码


论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
9 [报告]
发表于 2017-01-04 13:43 |只看该作者
回复 6# zy86416779

你这不符合题目要求,head 下面的文字不是对齐的

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
10 [报告]
发表于 2017-01-04 13:55 |只看该作者
回复 5# moperyblue

你这符合题目要求?header下面不是对齐的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP