如何使用grep和perl / sed查找和替换这些HTML句子

时间:2014-05-12 17:32:14

标签: regex perl sed grep

我的HTML行包含换行符和内容,我想替换这样的句子:

<li class="menu-581"><a href="../you-your-me-nm.html" title="You &amp;amp;
">You &amp; 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

有任何线索吗?

2 个答案:

答案 0 :(得分:1)

cat -e test.html
<p>$
<li class="menu-581"><a href="../you-your-me-nm.html" title="You &amp;amp;$
">You &amp; 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;amp;
">You &amp; 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'