Chcę przeprowadzić rekursywnie proste wyszukiwanie wyrażeń regularnych w katalogu, który nie jest ograniczony do pojedynczych wierszy.
Próbowałem grep i ack, ale wydaje się, że żadne z nich nie popiera tego.
Wiem, że nie powinno to być zbyt drogie obliczeniowo (w moim przypadku), ponieważ mój edytor tekstu ( Sublime Text ) może to zrobić dobrze.
Po prostu szukam prostej wersji tego wiersza polecenia. Google odkryło pcregrep , ale nie mogę tego znaleźć na Macu. Czy po prostu nie wyglądam we właściwym miejscu?
grep
kontekst pomaga Ci znaleźć to, czego szukasz (-C1
)?Odpowiedzi:
Zainstaluj Homebrew, a następnie:
To da ci najnowsze
pcregrep
źródło
Nie powiedziałeś dokładnie, czego szukasz, więc wyobrażam sobie zadanie, aby dowiedzieć się, czy plik zawiera 112, a następnie 223, nie uwzględniając znaków nowej linii.
Nieco wymyślone
awk
rozwiązanie:RS
Zmienna zawiera separator rekordu. Po ustawieniu go na pusty ciąg cały plik zostanie odczytany jako jeden rekord.Prawdopodobnie będzie to bardzo niewydajne w przypadku dużych plików.
Nawiasem mówiąc, robię to na OpenBSD, ale awk dla OS X powinien działać w ten sam sposób.
źródło
v
iRS
. tj.awk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
„pcregrep” może odnosić się do starszej stabilnej
pcregrep
i nowszejpcre2grep
. Oba są dostarczane przez projekt PCRE pod adresempcre.org
.Mac Ports zapewnia pierwszy jako część portu
pcre
(stabilny w wersji 8.40), a drugi jako część portupcre2
(obecnie wersja 10.22). Zainstaluj przez:źródło