Как использовать bash/sed для извлечения значения атрибута XML

Как использовать bash/sed для извлечения значения атрибута XML

У меня есть следующая команда grep, переданная в sed для поиска атрибута имени элемента и сохранения результата sed в переменной имени.

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

Образец данных -

<element name="Barium"/>

Желаемый результат -

Barium

Фактический объем производства -

<element name="Barium"/>

Я немного не понимаю, как заставить команду sed избавиться от лишнего.

(Я знаю, что xmllint упростил бы это, но не могу использовать его для этого)

решение1

Для этого вам не нужен sed:

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

Или

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

Связанный контент