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

相关内容