- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集算器文本处理之不定行日志解析
集算器文本处理之不定行日志解析
在将日志文本解析成结构化数据时时,常会遇到记录由数量不定的多行组成的情况。这
种变换存在一定的复杂性,实现复杂度较高。集算器支持正则表达式、字串拆分、隔行取数、
横向拼接等灵活的结构化计算函数,适合处理此类文本。下面通过例子来看一下具体作法。
日志文件reportXXX.log 存储着若干记录,每条记录由多行构成,包括14 个数据项(字
段)。记录以字符串“Object Type ”开头。我们的目标是把该日志整理为结构化数据,并将
结果写入文本文件。部分源数据如下:
Window Report for "aaa"
Object Type: Symbol
Location: left: 195 top: 11 right: 123 bottom: 15
Line Color: RGB ( 1 0 0 )
Fill Color: RGB ( 251 255 0 )
Link:l11
Type: Push Button - Action Script1
Condition Type: On Left Click/Key Down
Statement:
Call AufrufSchalter1( VEA_450P01.Name, SchalterH-0-A);
Link:l12
Type: Disable - Discrete Expression1
Disabled When Expression is FALSE
Object Type: Ploygon
Location: left: 295 top: 26 right: 200 bottom: 20
Line Color: RGB ( 2 0 0 )
Fill Color: RGB ( 229 229 229 )
Link:l21
Type: Push Button - Action Script2
集算器代码:
A
1 =file("e:\\reportXXX.log").read()
2 =A1.array("Object Type: ").to(2, )
3 =A2.regex("(.+)[\\s\\S]+left: (.+)[\\s\\S]+top: (.+)[\\ s\\S]+right: (.+) bottom:
(.+)[\\ s\\S]+Line Color:\\t\\t(.+)[\\s\\S]+Fill
Color:\\t\\t(.+)[\\S\\ s]+?Link:(.+)[\\ s\\S]+?Type: (.+)[\\s\\S]+Condition Type:
(.+)[\\ s\\S]+Statement:\\r\\n\\t+(.+)[\\ s\\S]+Link:(.+)[\\ s\\S]+Type:
(.+)\\r\\n\\r\\ n\\r\\ n\\t([ \\S]+)";
objectType,left,top,right,bottom,lineColor,fillColor,ojbectLink,type,conditionType,state
ment,statementLink,statementType,lastExpress)
4 =file("e:\\result.txt").export@t(A3)
A1=file("e:\\reportXXX.log").read()
这句代码用来将日志文件全部读入内存,结算结果如下:
A2=A1.array("Object Type: ").to(2, )
这句代码可以分解为两部分。第一部分:将A1 按照”Object Type”分割为多个字符串,
代码为A1.array("Object Type: ") ,计算结果如下:
第一条数据无用,之后的每条数据都是一条有效记录,to(2,)表示取出第二条直至最后
一条数据。A2 的计算结果如下:
A3= regex(正则表达式
文档评论(0)