我想寻找能为false XML文件的所有改变属性标签都有效,它可以是这样的如何在Perl中使用Regex进行搜索/替换时使用替换变量?
<repository store-diff="true" description="ACS" name="ACS" enabled="true">
有以及具有enabled属性,所以我需要寻找其他行的标签首先,这很容易,问题是替换字符串。我试过这个:
perl -p -e 's#^<repository.*enabled="true"#$1enabled="false"#g'
但没有运气,没有对文件做任何改变,我尝试改变。或者,这不是真的,它匹配,但我无法改变ONLY =“true”将其设置为false,它删除剩下的行,只留下enabled =“false”...
应根据
-1由于一大堆原因。 1)您没有告诉他使用XML解析器来处理XML数据。 2)你使用s /// g和起始行锚,它只能匹配一次。 3)它也会改变
tadmc
感谢您的笔记。我已经删除了有关'\ 1'和'$ 1'的错误陈述 - 感谢您的提醒。至于你的其他意见:1)我没有看到一个引人注目的理由来引入一个单行搜索和替换的XML解析器,特别是像这样微不足道的东西。这很容易用'sed'完成。 2)OP的问题包含'g',我试图介绍尽可能少的变化来为他做这件事。 3)修正的重点只是指出OP已经错过了什么(该组),但是你是对的,他的正则表达式也会匹配类似的字符串。 –
谢谢,这对我来说诀窍,因为这是只用一次编辑配置文件,它不需要更先进。对于真正的XML解析的东西,我更喜欢使用提供的Groovy和XML解析器 – rhellem