xmlstarlet。将多行中的多个值更改为 1 行,值之间用“---”分隔。可以吗?

问题描述 投票:0回答:1

我有这个 xml 文件(已截断)

<adddata dn="articulo">
<attr name="code">
<value>34839473</value>
<value>12263522</value>
</attr>
</adddata>

我想将多值行更新/替换为 1,值之间用“---”分隔。像这样:

<attr name="code">
<value>34839473---12263522</value>
</attr>

我尝试过:

xmlstarlet ed -u "//attr[@name='code']" -x 'concat(value[1], "---", value[2])'`

并导致:

<attr name="code">2312341---2348444</attr>

但我不知道如何在行中包含

"<value>"
"</value>"

有什么建议吗?

提前致谢

xmlstarlet multivalue
1个回答
0
投票

我建议:

xmlstarlet edit \
 --omit-decl \
 --update '//value[1]' --expr 'concat(//value[1], "---", //value[2])' \
 --delete '//value[2]' file.xml

输出:

<adddata dn="articulo">
  <attr name="code">
    <value>34839473---12263522</value>
  </attr>
</adddata>
© www.soinside.com 2019 - 2024. All rights reserved.