我试图在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/