【问题标题】:use seq and regex to pick and add a new line to xml file使用 seq 和 regex 选择新行并将其添加到 xml 文件
【发布时间】:2019-08-19 11:32:37
【问题描述】:

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

原创

<annotation>
  <folder>VOC2014_instance/person</folder>
  <filename>set00_V000_69.jpg</filename>
  <source> ... </source>
  ....
  ....
</annotation>

修改后的样子

<annotation>
  <folder>VOC2014_instance/person</folder>
  <filename>set00_V000_69.jpg</filename>
  <path>/home/red/MyDataset/set00_V000_69.jpg</path>
  <source> ... </source>
  ....
  ....
</annotation>

所以,我试着写这段代码

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

我正在做的是找到 filename>,然后附加 new line with \n + 4 spaces + &lt;path&gt;/home/red/$filename&lt;/path&gt; + newline

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

【问题讨论】:

标签: regex bash


【解决方案1】:

完整的命令如下所示:

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

【讨论】:

    【解决方案2】:

    您可以使用filename=$(basename "$file")获取文件名

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2017-07-05
      • 2015-06-21
      • 1970-01-01
      相关资源
      最近更新 更多