Esiste un comando in Mac OS X che può eseguire ricerche regex su più righe?


12

Voglio fare una semplice ricerca regex ricorsivamente attraverso una directory che non è limitata a singole righe.

Ho provato grep e ack, ma nessuno dei due sembra supportarlo.

So che non dovrebbe essere troppo costoso dal punto di vista computazionale (nel mio caso) perché il mio editor di testo preferito ( Sublime Text ) può farlo bene.

Sto solo cercando una versione da riga di comando semplice di questo. Google ha attivato pcregrep , ma non riesco a trovarlo per Mac. Non sto cercando nel posto giusto?


1
Dare un esempio di ciò che stai cercando sarebbe utile. E grepcon il contesto ti aiuta a trovare quello che vuoi ( -C1)?
mbb,

Risposte:


15

Installa Homebrew e quindi:

brew install pcre

Questo ti darà le ultime novità pcregrep


1

Non hai detto esattamente quello che stai cercando, quindi immaginerò il compito di scoprire se il file contiene 112 seguito da 223, ignorando le nuove righe.

Una awksoluzione leggermente inventata :

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

La RSvariabile contiene il separatore di record. Impostandolo su una stringa vuota, l'intero file verrà letto come un record.

Questo sarà probabilmente molto memoria inefficiente su file di grandi dimensioni.

A proposito, lo sto facendo su OpenBSD, ma il awk di OS X dovrebbe funzionare allo stesso modo.


Sono su OS X 10.11.2 e ottengo "awk: invalid -v option"
HaggleLad

in OS X è necessario uno spazio tra ve RS. vale a direawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
Neil,

0

"pcregrep" può riferirsi a una stalla più vecchia pcregrepe una più recente pcre2grep. Entrambi sono forniti dal progetto PCRE pressopcre.org .

Mac Ports fornisce il primo come parte della porta pcre(stabile alla versione 8.40) e il secondo come parte della porta pcre2(attualmente versione 10.22). Installa tramite:

% sudo port install pcre2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.