我试图在XML文件中搜索一些文本,文本是:

</p_dpopis>
    <IMGURL>

替换为:
</p_dpopis>
<p_vyrobce>NONAME</p_vyrobce>
    <IMGURL>

以下是我在perl上尝试过的,但没有成功:
perl -0pe 's|</p_dpopis>.*\n.*<IMGURL>|replacement|' myxml.xml

这里怎么了?

最佳答案

您缺少regex的“global”修饰符,使用\s+匹配任意数量的空白比指定.*\n.*要容易得多。将输出发送到另一个文件,而不是在终端窗口中处理它,也更好。

perl -0pe 's|</p_dpopis>\s+<IMGURL>|</p_dpopis>\n<p_vyrobce>NONAME</p_vyrobce>\n<IMGURL>|g' myxml.xml > my_new_xml.xml

如果你在操作XML,最好使用一个专用的XML解析器——你可以通过使用正则表达式来操作一种不规则的语言,比如XML,从而陷入各种各样的麻烦之中。

关于regex - 搜索并用空格替换多行文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26130707/

10-11 21:58
查看更多