【发布时间】:2010-11-12 04:56:15
【问题描述】:
我需要从如下所示的日志文件中提取请求:
<?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
编辑二:
我只提取了车辆注册部分,使用@eugene y 一行命令perl -nle 'm{<vehicleRegistration>} .. m{</vehicleRegistration>} and print' logfile ,我怎样才能摆脱重复,那些具有相同车辆id的节点,我只想保留一个副本。
【问题讨论】: