免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4378 | 回复: 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
21 [报告]
发表于 2014-09-17 00:23 |只看该作者
本帖最后由 Kasiotao 于 2014-09-17 00:23 编辑

回复 1# yuantong
那是因为你前面的很长一部分信息也被awk录入了,而我们测试用的文本是从第一个 WAIT 往后的,你可以把文本前面的部分去掉再测试
或则在前面加一个NR>(前面不必要信息的行数),例如: awk -F\' 'NR>11{a[$2]++;split($3,A,/ /);b[$2]+=A[3]}END{for(i in a){print i,a,"ela=",b}}' testfile加了NR>11,就可以避过开头那段输出正确内容了,你再用这段代码测测你贴出来的文本就没问题了。
   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2014-09-16 19:45 |只看该作者
如果用完整的trace 文件作为源,输出更乱

[root@11gdg tmp]# awk -F\' '{a[$2]++;split($3,A,/ /);b[$2]+=A[3]}END{for(i in a){print i,a[i],"ela=",b[i]}}' test.txt
2162 ela= 0
latch free 11 ela= 317
TABLE ACCESS BY INDEX ROWID FND_DEBUG_RULE_OPTIONS (cr=0 pr=0 pw=0 time=0 us cost=2 size=72 card=3) 1 ela= 0
NESTED LOOPS  (cr=0 pr=0 pw=0 time=76 us cost=0 size=54 card=1) 1 ela= 0
NESTED LOOPS  (cr=2 pr=0 pw=0 time=31 us cost=5 size=197 card=1) 1 ela= 0
700010be795af88 1 ela= 0
latch: ges resource hash list 14 ela= 2921
HASH JOIN SEMI (cr=15 pr=0 pw=0 time=5495 us cost=6 size=66 card=3) 1 ela= 0
NESTED LOOPS  (cr=10 pr=0 pw=0 time=92 us cost=6 size=122 card=1) 1 ela= 0
SORT ORDER BY (cr=2 pr=0 pw=0 time=57 us cost=9 size=227 card=1) 1 ela= 0
LOAD TABLE CONVENTIONAL  (cr=11 pr=0 pw=0 time=4390 us) 1 ela= 0
TABLE ACCESS FULL FND_DEBUG_RULES (cr=14 pr=0 pw=0 time=48 us cost=5 size=45 card=1) 1 ela= 0
FIXED TABLE FULL X$KVIT (cr=0 pr=0 pw=0 time=12 us cost=0 size=11 card=1) 1 ela= 0
INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK (cr=2 pr=0 pw=0 time=8 us cost=0 size=4 card=1) 1 ela= 0
buffer deadlock 2678 ela= 14407
latch: cache buffers chains 22 ela= 11391
TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=25 us cost=1 size=21 card=1) 1 ela= 0
700010bcf254d30 1 ela= 0

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2014-09-16 19:35 |只看该作者
回复 2# Kasiotao

只有Kasiotao的答案近似,其他的都不对,但是还是不够满足,能不能请大神修改一下?

你的代码跑出来是:
[root@11gdg tmp]# awk -F\' '{a[$2]++;split($3,A,/ /);b[$2]+=A[3]}END{for(i in a){print i,a,"ela=",b}}' test.txt
buffer busy waits 3 ela= 25
700010bd1aa1f10 1 ela= 0     《《---多余
9 ela= 0                               《《---多余
db file sequential read 21 ela= 39921
gc cr grant 2-way 5 ela= 1494
UPDATE 1 ela= 0                         《《---多余


谢谢
   

论坛徽章:
8
戌狗
日期:2013-10-12 11:37:19双子座
日期:2014-05-06 14:40:39巨蟹座
日期:2014-06-14 09:22:18戌狗
日期:2014-09-18 16:05:44巨蟹座
日期:2014-12-27 16:37:26酉鸡
日期:2015-01-20 18:39:022015年亚洲杯之沙特阿拉伯
日期:2015-04-20 22:38:242015亚冠之萨济拖拉机
日期:2015-06-19 16:01:03
18 [报告]
发表于 2014-09-16 18:44 |只看该作者
搜藏!
回复 6# reyleon


   

论坛徽章:
8
戌狗
日期:2013-10-12 11:37:19双子座
日期:2014-05-06 14:40:39巨蟹座
日期:2014-06-14 09:22:18戌狗
日期:2014-09-18 16:05:44巨蟹座
日期:2014-12-27 16:37:26酉鸡
日期:2015-01-20 18:39:022015年亚洲杯之沙特阿拉伯
日期:2015-04-20 22:38:242015亚冠之萨济拖拉机
日期:2015-06-19 16:01:03
17 [报告]
发表于 2014-09-16 18:39 |只看该作者
搜藏!
回复 6# reyleon


   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
16 [报告]
发表于 2014-09-15 09:51 |只看该作者
回复 15# reyleon


    这。。。。

论坛徽章:
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
15 [报告]
发表于 2014-09-15 09:47 |只看该作者
回复 14# bulletmarquis


    肉眼扫描法
    神童新算法
   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
14 [报告]
发表于 2014-09-15 09:32 |只看该作者
回复 13# reyleon


    学到了,哈哈,又会一种数值计算方法

   目前已经会的有下面几种,麻烦大神指点一下,还有别的方法么?
  1. a=1
  2. b=2


  3. let c=a+b
  4. echo $c
  5. 3


  6. expr $a + $b
  7. 3


  8. echo $[a+b]
  9. 3


  10. ((c=a+b))
  11. echo $c
  12. 3
复制代码

论坛徽章:
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
13 [报告]
发表于 2014-09-14 12:42 |只看该作者
回复 11# bulletmarquis


    $[] 是数值计算.
  1. [root@localhost ~]# echo $[1+2]
  2. 3
  3. [root@localhost ~]# echo $[3*4]
  4. 12
  5. [root@localhost ~]#
复制代码
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP