Próbuję użyć grep z wyrażeniem regularnym, aby znaleźć wiersze w pliku, które pasują do 1 z 2 możliwych ciągów. Oto mój grep:
$ grep "^ID.*(ETS|FBS)" my_file.txt
Powyższy grep nie zwraca żadnych wyników. Jeśli jednak wykonam:
$ grep "^ID.*ETS" my_file.txt
lub
$ grep "^ID.*FBS" my_file.txt
Dopasowuję określone linie. Dlaczego moje wyrażenie regularne OR nie pasuje? Z góry dziękuję za pomoc!
grep
regular-expression
dr.Bunsen
źródło
źródło
egrep
zamiastgrep -E
.Jeśli chcesz korzystać z wielu gałęzi (
|
asor
), to aby być bardziej kompatybilnym, lepiej wyraźnie powiedzieć, że chcesz użyć „nowoczesnego RE”, znanego również jako. ERE.Aby to zrobić, użyj grep -E :
Aby dowiedzieć się więcej o RE, ERE i całej „nowoczesnej” historii ER zobacz
man 7 regex
.Alternatywnie możesz użyć
egrep
zamiastgrep
, ale jak możesz przeczytać zman grep
:(...)
źródło