选择所需节点的正则表达式如下:
<!--\s*<env-entry>(.*\s*)*</env-entry>\s*-->
其中xml文件包含:
<!--
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<!--
<other-entry>
</other-entry>
-->
如何取消注释所选节点(可能使用sed / awk)?
答案 0 :(得分:1)
这是一个粗略的解决方案,它可能会在角落的情况下出现错误,因此请仔细测试:
/<!--/ {
comment = $0
getline
if ($0 !~ /<env-entry>/) print comment
}
/-->/ {
if (last_line ~ /<\/env-entry>/) next
}
{
last_line = $0
print
}
更新:我忘了提及解决方案是在AWK中,以防万一。