Какой самый простой способ получить эквивалент GNU grep, который поддерживает отрицательные взгляды? - PullRequest
18 голосов
/ 22 марта 2010

Я пытаюсь пролистать кучу файлов во вложенных подкаталогах, чтобы найти совпадения с регулярными выражениями; мое регулярное выражение требует отрицательного взгляда.

Perl имеет отрицательный вид сзади, но, насколько я могу судить, GNU grep не поддерживает отрицательные взгляды .

Какой самый простой способ получить эквивалент GNU grep, который поддерживает отрицательные взгляды?

(Полагаю, я мог бы написать свой собственный мини-grep на Perl, но, похоже, это не нужно. Моя копия Поваренной книги Perl содержит исходный текст для tcgrep; это то, что я должен использовать? где последняя версия? Не говорите, что мне нужно печатать всю эту программу!)

Ответы [ 2 ]

23 голосов
/ 22 марта 2010

Используйте ack ! Ack написан на Perl, поэтому использует движок регулярных выражений Perl (по умолчанию).

Отрицательный взгляд: ack "(?<!bad)boy" (за комментарий Уиллерта)

3 голосов
/ 13 декабря 2011

Благодаря комментарию от другого вопроса .Я обнаружил, что отрицательный вид сзади поддерживается экспериментально в grep с параметром -P/--perl-regexp, поэтому вам все равно может не понадобиться использовать другой инструмент, если вы предпочитаете продолжать использовать grep.

.Кстати, моя предпочтительная альтернатива grep - grin (которая написана на python).

...