使用 XMLStarlet(图像注释)将值连接到现有的 xml 属性

Concatenate a value to an existing xml attribute using XMLStarlet (Image Annotation)

我正在使用 xml 对图像进行注释。我正在使用 xmlstarlet 和 unix bash 命令,但是当我尝试将值附加到现有 xml 属性值时遇到一些问题。例如,我有 <filename>a</filename>,我想将其设为 <filename>a.jpg</filename>(即将“.jpg”连接到现有值)。

我使用了以下代码,但它完全覆盖了值(即 <filename>.jpg</filename>

脚本:

for name in *.xml; do xmlstarlet ed --inplace -u '/annotation/filename' -v .jpg "$name"; done

xmlstarlet 解法:

xmlstarlet ed -L -u '//annotation/filename' -x 'concat(., ".jpg")' input.xml

快速指南:xmlstarlet ed --help