我想尋找能爲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