Estoy buscando archivos xml que tengan ciertas propiedades. Por ejemplo, los archivos que contienen el siguiente patrón:Manera más simple de hacer un análisis xml básico desde la línea de comandos de Unix
<param-value>
<name>Hosts</name>
<description>some description</description>
<value></value>
</param-value>
para este tipo de archivos, me gustaría analizar el valor de otra variable, como por ejemplo:
<param-value>
<name>Roles</name>
<description>some description</description>
<value>asdf</value>
</param-value>
e imprimir el nombre del archivo a lo largo con "asdf". ¿Cuál es la forma más simple de lograr esto desde la línea de comando?
Un enfoque en el que estaba pensando era simplemente usar grep con la opción -l para filtrar los archivos coincidentes, y luego usar xargs grep para extraer el valor de Roles. Sin embargo, grep no funciona bien con expresiones regulares multilíneas. Vi otra pregunta que mostraba que se podía hacer con las opciones -Pzo, pero no tuve suerte para que funcionase en mi caso. ¿Hay un enfoque más simple?
¿Hay alguna razón en particular que usted no desea utilizar un lenguaje de programación como Perl? – Tom
No, una solución perl sería genial, preferiblemente una línea compacta, pero no sé cuál es la mejor manera de escribirla. – jonderry
Sería útil tener una solución que funcione con las herramientas más básicas, sin embargo, xmlstarlet, xpath y el módulo xpath de perl no están instalados en el sistema en el que voy a realizar la búsqueda. – jonderry