我有一个包含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