免费注册 查看新帖 |

Chinaunix

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

接下文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 22:44 |只看该作者 |倒序浏览
大家好,
我有一个这样的文件
        <caseresult>
              <siteRunTimes>1</siteRunTimes>
              <printQueryPlan>false</printQueryPlan>
              <type>0</type>
              <totalTime>2</totalTime>
              <caseFile>/home/xdbms/dailyqa/R4.9/scenario/site/kcc_count_q/cases/q9_1_100_16.sql</caseFile>
              <hasAnswer>false</hasAnswer>
              <isSuccessFul>true</isSuccessFul>
              <shouldRun>true</shouldRun>
            </caseresult>
            <caseresult>
              <siteRunTimes>1</siteRunTimes>
              <printQueryPlan>false</printQueryPlan>
              <type>0</type>
              <totalTime>5017</totalTime>
              <caseFile>/home/xdbms/dailyqa/R4.9/scenario/site/kcc_count_q/cases/q9_1_100_17.sql</caseFile>
              <hasAnswer>false</hasAnswer>
              <isSuccessFul>true</isSuccessFul>
              <shouldRun>true</shouldRun>
         </caseresult>
这样的格式,我想解析成

                           case                                                                                             Fail/Pass                           Runtime
casefile: /home/xdbms/dailyqa/R4.9/scenario/site/kcc_count_q/cases/q9_1_100_16.sql               ok                                     2

第一列是测试用例名。从<caseFile>标签里抽取的,  fail/pass 如果isSuccessFul 是true就是ok                    runtime是totalTime 中的值

中间是tab键

怎么写解析脚本

论坛徽章:
0
2 [报告]
发表于 2011-12-26 04:21 |只看该作者
  1. awk -vRS='</caseresult>\n' -vFS="\n" 'BEGIN{a[1]=6;a[2]=8;a[3]=5;print "case    Fail/Pass  Runtime"};{for(i=1;i<4;++i){ v=a[i];gsub(/<[^>]+>/, "", $v); if(i==2){$v=($v=="true"?"ok":"ko");};line=line" "$v} print line;line=""}' file|column -t
复制代码
"


妈的,睡觉了

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2011-12-26 04:43 |只看该作者
mpstat 发表于 2011-12-26 04:21
"

论坛徽章:
0
4 [报告]
发表于 2011-12-26 10:18 |只看该作者
{:3_201:}看来我得重修中文。。。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2011-12-26 12:24 |只看该作者
mpstat 发表于 2011-12-26 04:21
"

不过想想,这太依赖于XML的格式
如果人家XML不这么写,就不灵了.
还是用那个XML工具吧,不会依赖于格式

论坛徽章:
0
6 [报告]
发表于 2011-12-26 12:46 |只看该作者
cjaizss 发表于 2011-12-26 12:24
不过想想,这太依赖于XML的格式
如果人家XML不这么写,就不灵了.
还是用那个XML工具吧,不会依赖于格式

我是觉得,xml这种格式用什么工具解析都是件很恶心的事

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
7 [报告]
发表于 2011-12-26 16:12 |只看该作者
  1. #!/usr/bin/python
  2. import libxml2
  3. xpath = libxml2.parseFile("a.xml").xpathNewContext()
  4. [Case,Pass,Runtime] = [xpath.xpathEval("//caseFile/text()"),xpath.xpathEval("//isSuccessFul/text()"),xpath.xpathEval("//totalTime/text()")]
  5. print "Case\tFail/Pass\tRuntime"
  6. for i in range(len(Case)):
  7.         print "\t".join([str(Case[i]),"ok" if str(Pass[i])=="true" else "XX",str(Runtime[i])])
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2011-12-26 16:19 |只看该作者
ziyunfei 发表于 2011-12-26 16:12

python倒是不错,可惜不懂python
不过呢,有现成库的支持总是比较好的,自己去实现支持呢,也行,不过的确比较麻烦了.
因为正则表达式的贪婪,所以用sed去做这样的分析还是挺郁闷的

论坛徽章:
0
9 [报告]
发表于 2011-12-26 16:36 |只看该作者
sed -nr '/caseFile|isSuccessFul|siteRunTimes/{s/<[^>]*>//g;p}' data
得出关注数据,再用AWK怎么输出都行

论坛徽章:
0
10 [报告]
发表于 2011-12-26 22:00 |只看该作者
  1. #!/bin/bash
  2. value1=( ` sed -n 's/<caseFile>\(.*\)<\/caseFile>/casefile:\1/gp' text24` )
  3. value2=( `sed -n 's/<isSuccessFul>\(.*\)<\/isSuccessFul>/\1/gp' text24 | tr -d '
  4. '` )
  5. j=0
  6. echo -e "case\t\t\tFail/PASS"
  7. echo -e "\tRuntime"
  8. for i in ${value2[*]}
  9. do
  10.   if [ "$i" = "true" ]
  11.   then
  12.     echo -e "${value1[$j]}\tok"
  13.   else
  14.     echo -e "${value1[$j]}\t$i"
  15.   fi
  16.   j=`expr $j + 1`
  17. done
复制代码
这样?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP