我的HTML行包含换行符和内容,我想替换这样的句子:
<li class="menu-581"><a href="../you-your-me-nm.html" title="You &amp;
">You & Your Service Dog</a></li>
注意">You
我有第一部分,找到代码段
pcregrep -r -M -l '<li class="menu-581">(.|\n)*?</li>' *
现在,我想将它提供给Perl以用新文本替换相同的正则表达式
我正在尝试这个perl片段,但它不起作用(我将其保存在名为test.txt的文件中):
ls test.* | xargs perl -pe 's/<li class="menu-581">(.|\n)*<\/li>/new/' -pi
有任何线索吗?
答案 0 :(得分:1)
cat -e test.html
<p>$
<li class="menu-581"><a href="../you-your-me-nm.html" title="You &amp;$
">You & Your Service Dog</a></li>$
</p>$
然后
perl -0777 -pe 's{\Q<li class="menu-581"><a href="../you-your-me-nm.html" title="You &amp;
">You & Your Service Dog</a></li>}{}g' test.html
<p>
</p>
添加-i
标记以进行就地编辑:
perl -0777 -i -pe '...' test*
答案 1 :(得分:1)
编辑:我已经测试了这个,所以它按预期工作:
ls test.* | xargs perl -pe 'BEGIN{undef $/;};s/(<li class="menu-581">)(.*)(<\/li>)/$1$3/gs'