Cómo usar bash/sed para extraer el valor del atributo XML

Cómo usar bash/sed para extraer el valor del atributo XML

Tengo el siguiente comando grep canalizado a sed para encontrar un atributo de nombre de elemento y almacenar el resultado de sed en una variable de nombre.

 name=$(grep -E "<element.*name=.*/>" "$F" | sed -e "s/.*<element.*name=\(.*\)\/>.*?/\1/")

Data de muestra -

<element name="Barium"/>

Salida deseada -

Barium

Salida real -

<element name="Barium"/>

Estoy un poco confundido sobre cómo hacer que el comando sed elimine el exceso.

(Sé que xmllint haría esto fácil, pero no puedo usarlo para esto)

Respuesta1

No necesitas sed para esto:

grep -Po '(?<=<element name=")[^"]+' <file>

O

grep -Po '<element name="\K[^"]+' <file>

información relacionada