xmlstarlet se autodefine como un toolkit XML para línea de comando.
He usado esta herramienta desde hace varios años, generalmente para validar un xml, ya sea que esté bien formado como también contra un esquema (XSD) o DTD. Para lo primero, basta con:
xmlstarlet val test.xml
Hoy, sin embargo, estaba buscando una forma rápida de obtener un valor desde un archivo XML. Tomemos como ejemplo este archivo:
textoelemento
Si queremos, por ejemplo, seleccionar el texto de elemento, podemos ejecutar:
xmlstarlet sel --text -t -v /root/hijo/elemento test.xml
Si queremos encontrar el valor del atributo, ejecutamos:
xmlstarlet sel --text -t -v /root/hijo/elemento/@atributo test.xml
Para seleccionar elementos se utiliza la sintaxis XPath. Más info aquí.