regex - 使用 seq 和 regex 选择新行并将其添加到 xml 文件
问题描述
我有超过 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
我正在做的是找到文件名>,然后追加new line with \n + 4 spaces + <path>/home/red/$filename</path> + newline
我知道我做的不对,但首先我不知道如何选择文件名 b/w然后在末尾添加一个新行并带有空格
解决方案
所以这就是完整的命令的样子:
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
推荐阅读
- jsf - Bean 初始化 JSF (Primefaces)
- java - 有人可以帮我处理这个消息吗?我试图制作一个列表视图,但是当我运行代码时会弹出这个错误
- python - 忽略 pkg_resources.ContextualVersionConflict
- java - 安排每年执行的事情
- python - 是否可以使用 python 按字母顺序对 xml 属性值进行排序?
- java - 如何在受用户名和密码保护的远程位置创建和写入 CSV 文件?
- python - 从python中的消息列表中查找最常见的词对
- wordpress - 如何在 wordpress 中使用分类术语获取帖子
- javascript - 使用 useState() 设置道具时未重新渲染子项
- java - 无法在 macOS Catalina 上下载 Eclipse