【发布时间】:2019-12-07 21:03:35
【问题描述】:
请问如何返回以逗号分隔的 ID 列表?
<nodes>
<node>
<id>1</id>
<name>idbread</name>
</node>
<node>
<id>2</id>
<name>idbutter</name>
</node>
</nodes>
预期输出
1,2
我尝试使用 XPath,但 concat 只返回第一个值。
xpath node.xml "//nodes/node/id/text()" 2>/dev/null
返回
12
【问题讨论】:
-
xpath二进制/脚本从何而来?唯一一个我found 没有你使用的语法。 -
@fredrik:OP 可能正在做类似
xmllint --xpath "//nodes/node/id/text()" node.xml的事情,但在我的系统上它返回12。版本:xmllint: using libxml version 20904 -
@ArkadiuszDrabczyk 当他在问题中说明他正在运行哪个命令时,您是如何得出这个结论的?
-
@mri.o 你可以使用
echo $(sed -n 's:<id>\(.*\)</id>:\1, :pg' file) -
@sergio: Don't Parse XML/HTML With Regex. 我建议使用 XML/HTML 解析器(xmlstarlet、xmllint ...)。