免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何将事件的次数与时间统计出来 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-13 10:10 |只看该作者 |倒序浏览
请教各位SHELL高手,如何将一个文件里类似以下的内容分类统计出来?

我想要:
db file sequential read   次数  ela=的时间相加
gc cr grant 2-way  次数  ela=的时间相加
....
将每一个事件的次数与消耗的时间累计

谢谢

=====================
PARSING IN CURSOR #4576458312 len=234 dep=1 uid=44 oct=6 lid=44 tim=11666131325248 hv=2466557507 ad='700010bd1aa1f10' sqlid='gb5m2jy9h9bk3'
UPDATE /*+ first_rows index(msii, MTL_SYSTEM_ITEMS_INTERFACE_N3) */ MTL_SYSTEM_ITEMS_INTERFACE MSII SET PROCESS_FLAG = PROCESS_FLAG + 30000 WHERE TRANSACTION_TYPE IN ('UPDATE','SYNC') AND PROCESS_FLAG < 30000 AND SET_PROCESS_ID = :B1
END OF STMT
PARSE #4576458312:c=12,e=33,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=2,plh=541562793,tim=11666131325248
BINDS #4576458312:
Bind#0
  oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00
  oacflg=13 fl2=206001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=110a1e810  bln=22  avl=02  flg=09
  value=7
WAIT #4576458312: nam='db file sequential read' ela= 823 file#=14 block#=107398 blocks=1 obj#=382141 tim=11666131333127
WAIT #4576458312: nam='db file sequential read' ela= 1583 file#=14 block#=107400 blocks=1 obj#=382141 tim=11666131337257
WAIT #4576458312: nam='db file sequential read' ela= 346 file#=14 block#=107388 blocks=1 obj#=382141 tim=11666131343682
WAIT #4576458312: nam='db file sequential read' ela= 597 file#=14 block#=108528 blocks=1 obj#=382141 tim=11666131371732
WAIT #4576458312: nam='db file sequential read' ela= 562 file#=14 block#=108530 blocks=1 obj#=382141 tim=11666131374785
WAIT #4576458312: nam='gc cr grant 2-way' ela= 336 p1=14 p2=110320 p3=1 obj#=382141 tim=11666131411264
WAIT #4576458312: nam='db file sequential read' ela= 388 file#=14 block#=110320 blocks=1 obj#=382141 tim=11666131411805
WAIT #4576458312: nam='gc cr grant 2-way' ela= 306 p1=14 p2=110328 p3=1 obj#=382141 tim=11666131421697
WAIT #4576458312: nam='db file sequential read' ela= 432 file#=14 block#=110328 blocks=1 obj#=382141 tim=11666131422238
WAIT #4576458312: nam='gc cr grant 2-way' ela= 282 p1=14 p2=110837 p3=1 obj#=382141 tim=11666131429113
WAIT #4576458312: nam='db file sequential read' ela= 285 file#=14 block#=110837 blocks=1 obj#=382141 tim=11666131429478
WAIT #4576458312: nam='gc cr grant 2-way' ela= 298 p1=14 p2=110831 p3=1 obj#=382141 tim=11666131435782
WAIT #4576458312: nam='db file sequential read' ela= 376 file#=14 block#=110831 blocks=1 obj#=382141 tim=11666131436207
WAIT #4576458312: nam='gc cr grant 2-way' ela= 272 p1=14 p2=111312 p3=1 obj#=382141 tim=11666131459069
WAIT #4576458312: nam='db file sequential read' ela= 370 file#=14 block#=111312 blocks=1 obj#=382141 tim=11666131459547
WAIT #4576458312: nam='db file sequential read' ela= 25239 file#=14 block#=111893 blocks=1 obj#=382141 tim=11666131490600
WAIT #4576458312: nam='db file sequential read' ela= 880 file#=14 block#=111883 blocks=1 obj#=382141 tim=11666131501322
WAIT #4576458312: nam='db file sequential read' ela= 597 file#=14 block#=112401 blocks=1 obj#=382141 tim=11666131506411
WAIT #4576458312: nam='db file sequential read' ela= 1129 file#=14 block#=112403 blocks=1 obj#=382141 tim=11666131509186
WAIT #4576458312: nam='db file sequential read' ela= 1646 file#=14 block#=112407 blocks=1 obj#=382141 tim=11666131515292
WAIT #4576458312: nam='db file sequential read' ela= 1224 file#=14 block#=112934 blocks=1 obj#=382141 tim=11666131523676
WAIT #4576458312: nam='db file sequential read' ela= 1299 file#=14 block#=112926 blocks=1 obj#=382141 tim=11666131532217
WAIT #4576458312: nam='db file sequential read' ela= 801 file#=14 block#=112928 blocks=1 obj#=382141 tim=11666131536035
WAIT #4576458312: nam='db file sequential read' ela= 525 file#=14 block#=112924 blocks=1 obj#=382141 tim=11666131545224
WAIT #4576458312: nam='db file sequential read' ela= 434 file#=14 block#=113478 blocks=1 obj#=382141 tim=11666131548784
WAIT #4576458312: nam='db file sequential read' ela= 385 file#=14 block#=113476 blocks=1 obj#=382141 tim=11666131564560
WAIT #4576453096: nam='buffer busy waits' ela= 7 file#=14 block#=73632 class#=1 obj#=121003 tim=11666133750625
WAIT #4576453096: nam='buffer busy waits' ela= 16 file#=14 block#=73666 class#=1 obj#=121003 tim=11666133755790
WAIT #4576453096: nam='buffer busy waits' ela= 2 file#=14 block#=73668 class#=1 obj#=121003 tim=11666133756097

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
2 [报告]
发表于 2014-09-13 10:47 |只看该作者
  1. awk -F\' '{a[$2]++;split($3,A,/ /);b[$2]+=A[3]}END{for(i in a){print i,a[i],"ela=",b[i]}}' testfile
复制代码
是不是你的要的意思,试试看

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
3 [报告]
发表于 2014-09-13 10:48 |只看该作者
忘了附上结果。。。。
  1. buffer busy waits 3 ela= 25
  2. gc cr grant 2-way 5 ela= 1494
  3. db file sequential read 21 ela= 39921
复制代码

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
4 [报告]
发表于 2014-09-13 11:53 |只看该作者
本帖最后由 reb00t 于 2014-09-13 12:16 编辑

回复 2#
楼上大神少了关键字

    awk -F\' '/nam/{a[$2]++;split($3,A,/ /);b[$2]+=A[3]}END{for(i in a){print i,a,"ela=",b}}'  1

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
5 [报告]
发表于 2014-09-13 12:12 |只看该作者
本帖最后由 李满满 于 2014-09-13 12:16 编辑

充气大神~看来是被CU屏蔽掉a\[i\] b\[i\]了,你看你的代码,绝对不相信你会犯这个错误
回复 4# reb00t

   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
6 [报告]
发表于 2014-09-13 12:16 |只看该作者
  1. echo $[$(grep -Po "(?<=nam='db file sequential read' ela= )\d+" file | tr '\n' '+') 0]
复制代码
  1. echo $[$(grep -Po "(?<='gc cr grant 2-way' ela= )\d+" file | tr '\n' '+') 0]
复制代码

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
7 [报告]
发表于 2014-09-13 12:27 |只看该作者
已收藏~回复 6# reyleon


   

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
8 [报告]
发表于 2014-09-13 12:37 |只看该作者
  1. <?php

  2. $file = file('200.txt');
  3. $arr = array();
  4. foreach ($file as $k => $v) {
  5.         preg_match('/nam=\'(.*)\' ela= ([^\s]+)/', $v,$match);
  6.         if(!empty($match)) $arr[$match[1]]+=$match[2];
  7. }

  8. foreach ($arr as $kk => $vv) {
  9.     echo  $kk."\t".$vv."\n";
  10. }

  11. ?>

  12. 结果:
  13. db file sequential read        39921
  14. gc cr grant 2-way        1494
  15. buffer busy waits        25
  16. [Finished in 0.2s]
复制代码

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
9 [报告]
发表于 2014-09-13 12:42 |只看该作者
看来这帖子收藏的有价值了~回复 8# reb00t


   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2014-09-13 15:40 |只看该作者
非常感谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP