Есть ли в Mac OS X команда, которая может выполнять поиск по регулярным регулярным выражениям?

12

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

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

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

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

Дэн Тао
источник
1
Дать пример того, что вы ищете, было бы полезно. И помогает ли grepс контекстом найти то, что вы хотите ( -C1)?
Мб

Ответы:

15

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

brew install pcre

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

Тобия
источник
1

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

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

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

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

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

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

Kusalananda
источник
Я на OS X 10.11.2 и получаю "awk: invalid -v option"
HaggleLad
в OS X вам нужен пробел между vи RS. то естьawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
Нил
0

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

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

% sudo port install pcre2
Джим ДеланХант
источник