使用sed删除具有特定锚文本匹配的URL

时间:2011-03-03 16:15:54

标签: sed

尝试解析一些mysql导出文件中的垃圾邮件注入,并且由于某种原因这不起作用:

sed 's|(<a href="http://[^"]*">[^<]*Buy[^<]*</a>)||g'

其中,imo应匹配并删除:

<a href="http://basicpills.com/">Buy Generic Drugs Without Prescription</a>

但由于某种原因不是。我可以在Perl中做到这一点没有问题,因为它支持非贪婪的比赛,但它是如此缓慢,因为我可能不得不做7或8次传球来获得所有不同的排列,如果我能得到它会好得多而是改为工作。

1 个答案:

答案 0 :(得分:2)

不要忘记-r支持扩展正则表达式:sed -r 's|(<a href="http://[^"]*">[^<]*Buy[^<]*</a>)||g'或者只删除无用的括号(\(\)没有-r

您确定perl -p -e 's|<a href="http://[^"]*">[^<]*Buy[^<]*</a>||g'真的很慢。