Чи є в Mac OS X команда, яка може виконувати багаторядковий пошук регулярних виразів?


12

Я хочу здійснити простий пошук по регулярному вираженню рекурсивно через каталог, який не обмежений одним рядком.

Я спробував grep and ack, але, схоже, жодне це не підтримує.

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

Я просто шукаю просту версію цього командного рядка. Google виявив pcregrep , але я не можу знайти це для Mac. Я просто не шукаю в потрібному місці?


1
Надання прикладу того, що ви шукаєте, було б корисно. І чи grepдопомагає контекст вам знайти те, що ви хочете ( -C1)?
mbb

Відповіді:


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 Ports надає перший як частина порту pcre(стабільний у версії 8.40), а другий як частину порту pcre2(на даний момент версія 10.22). Встановити через:

% sudo port install pcre2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.