我需要提取从日志文件看起来像这样的请求中提取一定的模式:从日志
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vehicleRegistration>
.... XML in between ....
.... XML in between ....
.... XML in between ....
.... XML in between ....
... at nth line there is line like this <vehicle id="2312313"></vehicle>
.... XML in between ....
.... XML in between ....
</vehicleRegistration>
重要的问题是,vehicleRegistration可以5日线和17有时,它的多变。这就是我目前的grep的失败,我用:
grep -A 13 "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" vehicle.log
而且另一个问题是,有时一个请求可以发送2次以上,因为该服务可能会因某些原因无法使用,所以有可能是相同的文件中有多个请求。
我也应该排除重复的请求,通过比较第n行(不是最后一行)<vehicle id="2312313"></vehicle>
,如果车辆id重复比它的重复,知道请求是重复的方式。
你将如何解决这个问题?建议,代码,伪代码,任何东西都是值得欢迎的。
编辑:
日志文件不是一个XML文件,它只是一个包含XML请求的一些小的百分比和文件,我不能分析它为XML
编辑II:
我只提取车辆注册部分,使用@eugene y一行命令perl -nle 'm{<vehicleRegistration>} .. m{</vehicleRegistration>} and print' logfile
,我怎样才能摆脱重复,那些具有相同车辆ID的节点,我只想保留这些副本。
感谢您的回应,上面做了什么?打印车辆ID?我需要使用此车辆识别号来清除之间的任何内容 vehicleRegistration> –
ant
2010-11-10 15:01:07
是的,这需要您切除的XML块并打印出车辆ID。 – 2010-11-10 15:23:00
我想删除车辆注册节点,其中包含与任何其他车辆注册节点相同的车辆ID,我该怎么做呢?伪代码或代码会很棒,或者教程或任何可能帮助我完成这些任务的东西。 tnx – ant 2010-11-10 16:10:53