11

Я хочу сделать простой регулярный поиск по каталогу, который не ограничен одной строкой.

Я попробовал grep и ack, но ни один из них не поддерживает это.

Я знаю, что это не должно быть слишком вычислительно дорого (в моем случае), потому что мой текстовый редактор по выбору (Sublime Text) может сделать это просто отлично.

Я просто ищу эту версию командной строки. Google включил pcregrep, но я не могу найти это для Mac. Я просто не смотрю в нужном месте?

3 ответа3

12

Установите Homebrew и затем:

brew install pcre

Это даст вам последний pcregrep

1

Вы не сказали точно, что вы ищете, поэтому я представлю задачу выяснить, содержит ли файл 112, а затем 223, не обращая внимания на переводы строки.

Немного придуманное решение awk :

awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in

Переменная RS содержит разделитель записей. Если установить пустую строку, весь файл будет считан как одна запись.

Это, вероятно, будет очень неэффективно для больших файлов.

Кстати, я делаю это на OpenBSD, но OS X awk должен работать так же.

0

"pcregrep" может означать более старый стабильный pcregrep и более новый pcre2grep . Оба предоставлены проектом PCRE на pcre.org .

Порты Mac предоставляют первый как часть порта pcre (стабильный в версии 8.40), а второй как часть порта pcre2 (в настоящее время версия 10.22). Установить через:

% sudo port install pcre2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .