我似乎想不出我最后一个作品来达到我想要的效果。
我有一个包含许多条目的文件,如下所示:
<Stats>
<RecNum>45435</RecNum>
<Date>2016/12/31</Date>
<DayofWeek>6</DayofWeek>
<Time>16:35</Time>
<Dir>Closing</Dir>
<Class>2</Class>
<SpeedSpan>1</SpeedSpan>
<TimeSpan>1</TimeSpan>
<Bucket Speed="34" Count="1"/>
<Bucket Speed="35" Count="0"/>
<Bucket Speed="36" Count="1"/>
</Stats>
如果Count=1,我想打印日期、时间和速度,如下所示:
^{pr2}$我最接近的是:
$ awk -F'[ <>]' 'BEGIN {d="d";t="t";} /<Date>/ {d=$3;} /<Time>/ {t=$3;} /Count="1"/ {print d "\t" t "\t" $3;}' speed.xml
这给了我:
2016/12/31 16:35 Speed="34"
2016/12/31 16:35 Speed="36"
我试过很多不同的迭代,但似乎不能得到没有文字的速度数字。我试图用“作为字段分隔符,但它似乎从来没有像预期的那样工作。
我希望找到一个awk解决方案,但如果没有,我可以使用python程序来去除不需要的字符。
Jose Ricardo Bustos M.'s helpful XSLT-based answer和{a2}更可取,因为它们采用了适当的XML解析,这两种解析既灵活又健壮。在
要修复
awk
命令:split($2, flds, "\"")
按"
拆分感兴趣的行,并将结果存储到自定义数组flds
,这允许按索引2提取{还要注意
-v OFS='\t'
的用法,也就是说,将输出字段分隔符设置为制表符,这将启用一个更简单的print
语句,该语句枚举(,
)输出字段,并依赖awk
用OFS
隐式分隔它们。在事后想想:在字段分隔符字符集中添加
^{pr2}$"
也会起作用:既然你提到了python:
使用的数据:
^{pr2}$印刷品:
尽管我喜欢
awk
,但我建议使用xslt
来实现这一点(使用XSLT,可以将XML文档转换为任何文本格式)。xslt w3schools跑吧。如果您使用的是某种Linux/Unix,请使用XSLT-1.0处理器
^{pr2}$xsltproc
(还有更多处理器),如下所示:你得到了
相关问题 更多 >
编程相关推荐