使用seq和regex拾取并向xml文件添加新行

使用seq和regex拾取并向xml文件添加新行,regex,bash,Regex,Bash,我有超过1k个xml文件,在一个循环中,我想对xml文件做一些更改 原创的 VOCU实例/人 set00_V000_69.jpg ... .... .... 你应该看起来像 VOCU实例/人 set00_V000_69.jpg /home/red/MyDataset/set00_V000_69.jpg ... .... .... 所以,我试着写这段代码 for file in $PWD/*.xml do sed -i 's/filename>/[\n] <p

我有超过1k个xml文件,在一个循环中,我想对xml文件做一些更改

原创的


VOCU实例/人
set00_V000_69.jpg
... 
....
....
你应该看起来像


VOCU实例/人
set00_V000_69.jpg
/home/red/MyDataset/set00_V000_69.jpg
... 
....
....
所以,我试着写这段代码

for file in $PWD/*.xml
do
    sed -i 's/filename>/[\n]    <path></path>/g' $file
done
$PWD/*.xml格式文件的

做
sed-i的/filename>/[\n]/g'$file
完成
我要做的是查找文件名>,然后在
新行中添加\n+4个空格+/home/red/$filename+newline


我知道我做得不对,但首先我不知道如何选择文件名b/w,然后在末尾添加一行空格

您可以使用
filename=$(basename“$file”)

获得文件名,因此完整的命令如下所示:

for file in $PWD/*.xml
do
do sed -i 's/>Images</>VOC2012</g' $file
filename=$(basename "$file")
xmlstarlet edit --inplace \
           --append "//annotation/filename" \
           --type elem --name "path" --value "/home/red/MyDataset/music/Images/$filename" $file
done
$PWD/*.xml格式文件的

do sed-i’s/>ImagesVoc2012由于xml文件不是基于行的文件,一般建议使用xml库来进行此类编辑,而不是使用基于行的工具。请先选择正确的工具。我建议使用XML/HTML解析器(例如xmlstarlet)。这个怎么样?python中的xml etree?@Cyrus python中的xml etree如何?这可能会有帮助: