如何使用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>

相關內容