Мне нужно извлечь запросы из файла журнала, который выглядит следующим образом:
<?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>
Важным вопросом является то, что регистрация транспортного средства может быть 5 строк, а иногда 17, его можно изменить. Это где мой текущий grep не удалось, я использовал:
grep -A 13 "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" vehicle.log
Также другая проблема заключается в том, что иногда запрос может быть отправлен 2 или более раз, поскольку служба может быть недоступна по какой-либо причине, поэтому в файле могут быть одни и те же множественные запросы.
Я также должен исключить повторяющиеся запросы, способ узнать, что запрос дублируется, сравнивая n-ю строку (не последнюю строку) <vehicle id="2312313"></vehicle>
, если идентификатор транспортного средства повторяется, чем его дубликат.
Как бы вы решили это? Предложения, код, псевдокод, все что угодно.
РЕДАКТИРОВАТЬ:
Файл журнала не является XML-файлом, это просто файл, содержащий небольшой процент запросов XML, и я не могу разобрать его как XML
РЕДАКТИРОВАТЬ II:
Я извлек только часть регистрации транспортного средства, используя @eugene y однострочную команду perl -nle 'm{<vehicleRegistration>} .. m{</vehicleRegistration>} and print' logfile
, как мне избавиться от дубликатов, тех узлов с одинаковым идентификатором транспортного средства, я хочу сохранить только одну их копию.