我有一个包含此 XML 数据的文件:
<?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。即,我想删除每个<item>
具有空子元素的<tag4>
元素。
因此,我想先查找<item>
然后查找<tag4/>
,然后</item>
将其分组并替换为X
字符。
我什至还没有开始分组,我一直坚持在多行上做一个正则表达式。
在 Mac OS X 上运行
这就是我得到的:
perl -pn -e "s/<item>[\s\S]*<tag4 \/>/X/g" $XML_FILENAME > new_folder/$XML_FILENAME
如果我删除[\s\S]*
( 这意味着任何空格字符或任何字符,我可以替换<item>
标签,但我无法进入下一个标签或下一行。
(我也尝试过echo//
并sed
陷入类似的位置)