Использование sed для удаления URL с конкретными текстами привязки - PullRequest
0 голосов
/ 03 марта 2011

Попытка разобрать спам-инъекцию из файла экспорта mysql, и по какой-то причине это не работает:

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

Что, imo, должно совпадать и удалять:

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

но по какой-то причине нет. Я могу сделать это в perl без проблем, так как он поддерживает не жадные совпадения, но это очень медленно, и, поскольку мне, вероятно, придется делать 7 или 8 проходов, чтобы получить все различные перестановки, было бы намного лучше, если бы я мог получить sed вместо этого работает.

1 Ответ

2 голосов
/ 03 марта 2011

Не забудьте -r для поддержки расширенного регулярного выражения: sed -r 's|(<a href="http://[^"]*">[^<]*Buy[^<]*</a>)||g' или просто удалить бесполезные скобки (это должно быть \( и \) без -r)

Вы уверены, что perl -p -e 's|<a href="http://[^"]*">[^<]*Buy[^<]*</a>||g' действительно медленнее.

...