Есть ли в 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 должен работать так же.


Я на 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.