【发布时间】:2016-10-08 16:02:02
【问题描述】:
我想使用 shell 变量搜索和添加新的 xml 标签。
使用下面的命令,KVM_IF_LIST_FILE 将存储KVM 实例的所有接口名称[它将包含例如:eno1 eno2 eno3 eno4]。
virsh domiflist $kvm_name|awk {'print $3'}|awk 'NR>2' >> $KVM_IF_LIST_FILE
现在我需要搜索<source dev='eno0/1/2/3' mode='bridge'/>,如果找到上面的模式,需要添加新的xml节点
(<target dev=\'$kvm_name$cnt\'/>) 在上述模式旁边。我编写了下面的 shell 脚本,在这种情况下不起作用。
cnt=0
for i in `cat $KVM_IF_LIST_FILE`
do
echo "Updating macvtap device names for $i"
sed -i.bak "/source dev='\'/a <target dev=\'$kvm_name$cnt\'/>" $XML_FILE
cnt=`expr $cnt + 1`
done
请告诉我如何修改上述脚本以进行上述搜索和替换。
【问题讨论】:
-
使用 XML 感知工具修改 XML 文档。
-
如果您在此处搜索
[sed] xml,您会找到 1400 多个答案。你看过他们中的任何一个吗?祝你好运。 -
使用支持 XML 的工具执行此操作实际上 easy,而使用不支持 XML 的工具执行此操作实际上肯定会遇到一些极端情况,您的代码会创建一个损坏的文档。