你可以这样做。首先选择的值
filename
以及
path
.
$ filenameVal=$(xmlstarlet sel -t -v "/annotation/filename" file)
$ pathVal=$(xmlstarlet sel -t -v "/annotation/path" file)
下一步确定目录名
路径
通过
$(dirname $pathVal)
并连接
$filenameVal
为了它。您可以在不按如下方式编辑文件的情况下对此进行测试运行:
$ xmlstarlet ed -u "/annotation/path" -v "$(dirname $pathVal)/$filenameVal" file
<?xml version="1.0"?>
<annotation>
<folder>cars_train</folder>
<filename>00001.jpg</filename>
<path>Users/hantaoliu/Documents/Research/cars_train/00001.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
</size>
</annotation>
如果事情看起来不错,你可以添加
-L
开关显示
xmlstartlet
就地编辑。
$ xmlstarlet ed -L -u "/annotation/path" -v "$(dirname $pathVal)/$filenameVal" file
确认结果
file
:
$ cat file
<?xml version="1.0"?>
<annotation>
<folder>cars_train</folder>
<filename>00001.jpg</filename>
<path>Users/hantaoliu/Documents/Research/cars_train/00001.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
</size>
</annotation>
工具书类