Como usar o bash/sed para extrair o valor do atributo XML

Como usar o bash/sed para extrair o valor do atributo XML

Eu tenho o seguinte comando grep canalizado para sed para encontrar um atributo de nome de elemento e armazenar o resultado sed em uma variável de nome.

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

Dados de amostra -

<element name="Barium"/>

Saída desejada -

Barium

Saída real -

<element name="Barium"/>

Estou um pouco confuso sobre como obter o comando sed para me livrar do excesso.

(Eu sei que o xmllint tornaria isso fácil, mas não posso usá-lo para isso)

Responder1

Você não precisa do sed para isso:

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

Ou

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

informação relacionada