0 votos

Necesito ayuda para usar el comando grep en el terminal

Estoy intentando extraer el valor de title en este fragmento de XML. Es un verdadero problema hacerlo con Python, así que pensé que tal vez un simple grep y algún regex sería suficiente. Pero estoy teniendo un tiempo difícil con la expresión.

He conseguido crear esta expresión en regexr.com title=(["'])(?:(?=(\\?))\2.)*?\1 pero no se puede ejecutar en la terminal.

En este ejemplo, estoy tratando de extraer This is what i want to be extracted .

<Video ratingKey="4" key="/library/metadata/4" guid="com.agents.imdb://tt0322259?lang=en" studio="Mikona Productions GmbH &amp; Co. KG" type="movie" title="This is what i want to be extracted" contentRating="PG-13" summary="It&#39;s a major double-cross when former police officer Brian O&#39;Conner teams up with his ex-con buddy Roman Pearce to transport a shipment of &#34;dirty&#34; money for shady Miami-based import-export dealer Carter Verone. But the guys are actually working with undercover agent Monica Fuentes to bring Verone down." rating="3.6" audienceRating="5.0" year="2003" tagline="How Fast Do You Want It?">
<Part id="4" key="/library/parts/4/1534795606/file.mkv" duration="6455870" file="/media/movies/file.mkv" size="14015931289" audioProfile="ma" container="mkv" videoProfile="high" />
</Media>
<Genre tag="Action" />
<Genre tag="Crime" />
</Video>

He probado múltiples iteraciones de

grep file.xml -e "title=([\"'])(?:(?=(\\?))\2.)*?\1"

2voto

grep no puede hacer sustituciones. Utilizando su fragmento de texto

sed -ne 's/.*title="\([^"]*\)".*/\1/p' FILE.XML

debería funcionar.

2voto

Madhur Ahuja Puntos 190

El uso de expresiones regulares puede ser un poco complicado para manejar XML - una opción más simple puede ser usar xmllint .

Usando su ejemplo:

xmllint --xpath "string(/Video/@title)" file.xml

La salida:

This is what i want to be extracted

El XPath selecciona el title atributo de Video y lo convierte en una cadena.

Tenga en cuenta que su fragmento XML no está bien formado - tiene un cierre </Media> pero no hay apertura <Media> etiqueta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X