2011-11-25 57 views
11

¡Es viernes por la tarde y mi cerebro se ha congelado!Obtener texto dentro de la etiqueta xml usando grep

grep -E -m 1 -o "<title>(.*)</title>" myfile.rss 

vuelve

<title>Some title</title> 

¿Cómo acaba de obtener Some title?

+1

Bash no tiene una función de acumulación para analizar XML. Puede considerar usar PHP, perl para analizar XML de la manera adecuada. Entonces obtener el valor del nodo será fácil – ajreal

+0

Nah, ¡eso es una exageración total para la tarea! – tdc

+0

Por lo que entiendo, solo queremos extraer el contenido del título de xml del diseño conocido, no analizar el xml. Para analizar xml 'xmlstarlet' puede ser una utilidad útil. –

Respuesta

21

tubería que además a través de, por ejemplo

sed -e 's,.*<title>\([^<]*\)</title>.*,\1,g' 
+0

Gracias! Cerebro descongelado ;-) – tdc

+0

+1, pero tenga en cuenta que el uso de 'sed' para analizar XML (o HTML) no es una buena idea en general. Se debe hacer solo cuando la entrada es bien conocida y no varía inesperadamente. Para cualquier cosa sorbida automáticamente de Internet, se debe usar un analizador apropiado. – Sorpigal

+0

@Sorpigal, estoy completamente de acuerdo, vea los comentarios a la pregunta en sí para más detalles. –

Cuestiones relacionadas