Sto cercando file xml con determinate proprietà. Ad esempio, i file che contengono il seguente schema:Il modo più semplice per eseguire l'analisi XML di base dalla riga di comando di Unix
<param-value>
<name>Hosts</name>
<description>some description</description>
<value></value>
</param-value>
Per tali file, mi piacerebbe analizzare il valore di un altro tag, come ad esempio:
<param-value>
<name>Roles</name>
<description>some description</description>
<value>asdf</value>
</param-value>
e stampare il nome del file lungo con "asdf". Qual è il modo più semplice per farlo dalla riga di comando?
Un approccio a cui stavo pensando era l'uso di grep con l'opzione -l per filtrare i file corrispondenti, e quindi usare xargs grep per estrarre il valore dei ruoli. Tuttavia, grep non funziona bene con regex multi-line. Ho visto un'altra domanda che mostrava che si poteva fare con le opzioni -Pzo, ma non ho avuto fortuna nel farlo funzionare nel mio caso. C'è un approccio più semplice?
C'è un motivo particolare non si desidera utilizzare un linguaggio di scripting come Perl? – Tom
No, una soluzione perl sarebbe ottima, preferibilmente una linea singola compatta, ma non conosco il modo migliore per scrivere. – jonderry
Sarebbe utile avere una soluzione che gira solo con gli strumenti più basilari, tuttavia xmlstarlet, xpath e xpath non sono installati sul sistema su cui eseguirò la ricerca. – jonderry