我有一個包含XML數據文件:用Perl多行正則表達式(OSX)bash腳本
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<tag1>some text</tag1>
<tag2><![CDATA[http://url1.com]]></tag2>
<tag3 />
<tag4>not empty node</tag4>
</item>
<item>
<tag1>some other text</tag1>
<tag2><![CDATA[http://www.url.com]]></tag2>
<tag3 />
<tag4 />
</item>
</root>
(和更大量的XML內)
我試圖寫一個bash腳本刪除一些XML。也就是說,我想刪除每個子空間爲<tag4>
的元素<item>
。
因此,我想查找<item>
,然後找到<tag4/>
,然後找到</item>
,將此組並替換爲X
char。
我還沒有達到分組呢,我一直堅持在多行上做一個正則表達式。
運行在Mac OSX
這是我有:
perl -pn -e "s/<item>[\s\S]*<tag4 \/>/X/g" $XML_FILENAME > new_folder/$XML_FILENAME
如果刪除[\s\S]*
(這意味着任何空格字符或任何字符,我可以代替<item>
標籤,但我不能進入下一個標籤或下一行。
(我也試過echo//
和sed
陷入類似的位置)
必須逃脫斜線:' ' –
@CasimiretHippolyte當然,只是一個錯字 – Blundell