Próbuję po prostu wymyślić podstawowe użycie wyrażeń regularnych z grep (lub egrep) w terminalu mac (BSD grep - 2.5.1-FreeBSD).
Plik do sprawdzenia ( pow.txt
) zawiera linie:
kiytytytyty
i
blob.mkv
użyte polecenie to:
grep -E ^[a-z]+\.[a-z]{3}$i pow.txt
zwrócone dopasowanie to:
kiytytytyty
Oczywiście nie pasowałoby to do wyrażenia regularnego PCRE. Czy wyrażenia regularne są interpretowane inaczej na Macu? Czy moja składnia jest nieprawidłowa?
grep -Ei '^[a-z]+\.[a-z]{3}$' pow.txt
.\.
” możesz użyć „[.]
”, aby dopasować znak kropki, i możesz użyć[a-zA-Z]
dla klas znaków zamiast-i
opcjigrep
. Jest na to wiele sposobów!Odpowiedzi:
Jeśli próbujesz dopasować
blob.mkv
, spróbuj:źródło
$i
pustym ciągiem, chyba że masz coś w tej zmiennej), ponieważ nie zacytowałeś wyrażenia regularnego.grep -E
na każdej platformie, nie tylko na Macu. GNUgrep
magrep -P
składnię PCRE; kiedyś istniał również na Macu, ale został usunięty z powodów, które tylko Apple może wyjaśnić. Być może przeczytaj o BRE vs ERE vs PCRE. Krótko mówiąc,\s \w \d
przyjaciele, spojrzenia, nazwane grupy, dopasowanie atomowe i niepochodne kwantyfikatory to tylko niektóre z funkcji obecnych tylko w PCRE.