Простейший способ выполнить базовый синтаксический анализ xml из командной строки unix

Я ищу файлы xml с определенными свойствами. Например, файлы, содержащие следующий шаблон:

<param-value>
  <name>Hosts</name>
  <description>some description</description>
  <value></value>
</param-value>

Для таких файлов я хотел бы проанализировать значение другого тега, например:

<param-value>
  <name>Roles</name>
  <description>some description</description>
  <value>asdf</value>
</param-value>

И распечатать имя файла вместе с «asdf». Какой самый простой способ сделать это из командной строки?

Один из подходов, о котором я думал, заключался в использовании grep с параметром -l для фильтрации совпадающих файлов, а затем с помощью xargs grep для извлечения значения Roles. Однако grep не работает с многострочными регулярными выражениями. Я увидел другой вопрос, который показал, что это можно сделать с помощью параметров -Pzo, но мне не удалось заставить его работать в моем случае. Есть ли более простой подход?

10
задан jonderry 8 February 2012 в 19:57
поделиться