【发布时间】:2016-09-20 05:47:54
【问题描述】:
我创建了一个匹配模式的文件的文件名数组:
lista=($(grep -El "<LastVisitedURL>.+</LastVisitedURL>.*<FavoriteTopic>0</FavoriteTopic>" *))
现在我将在文件 index.xml 中删除包含数组中文件名的所有标签附件。
for e in ${lista[*]}
do
sed '/\<TopicKey FileName=\"$e\"\>.*\<\/TopicKey\>/d' index.xml
done
完整的脚本是:
#! /bin/bash
#search xml files watched and no favorites.
lista=($(grep -El "<LastVisitedURL>.+</LastVisitedURL>.*<FavoriteTopic>0</FavoriteTopic>" *))
#declare -p lista
for e in ${lista[*]}
do
sed '/<TopicKey FileName=\"$e\">.*<\/TopicKey>/d' index.xml
done
即使正则表达式模式不起作用,sed 中的-i 选项用于在 index.xml 中进行编辑,多次重新加载索引文件,文件名如何具有数组,这很糟糕。
有什么建议吗?
【问题讨论】:
-
要编辑 xml 文件,请使用
xmlstarlet -
xmlstarlet 很有用。感谢 Qunot 和所有人。