Recentemente ho dovuto porto la mia soluzione originale più semplice utilizzando --xpath ad una piattaforma manca questa caratteristica, quindi abbiamo dovuto adottare la soluzione "cat" troppo. Questo gestirà più corrispondenze, testato su Ubuntu 12.04 e Solaris 11:
getxml() { # $1 = xml file, $2 = xpath expression
echo "cat $2" | xmllint --shell $1 |\
sed -n 's/[^\"]*\"\([^\"]*\)\"[^\"]*/\1/gp'
}
ad es. l'estrazione di nomi di istanza da una configurazione di dominio GlassFish:
$ getxml /tmp/test.xml "//server[@node-ref]/@name"
inst1
inst2
Il post-processing sed appena afferra tutti i valori indicati che era adeguata per le mie esigenze (ottenendo bit di configurazione pesci vetro).
fonte
2014-06-05 03:23:23
Usa xmllint in modo da non dover usare RE per analizzare XML. Renditi conto che devi usare i RE per analizzare l'output di xmllint. – badp
perché stampa ------- prima del valore dell'attributo nome? come rimuoverlo? –