Я пытаюсь использовать grep с регулярным выражением, чтобы найти строки в файле, которые соответствуют 1 из 2 возможных строк. Вот мой grep:
$ grep "^ID.*(ETS|FBS)" my_file.txt
Вышеуказанный grep не возвращает результатов. Однако, если я выполню либо:
$ grep "^ID.*ETS" my_file.txt
или же
$ grep "^ID.*FBS" my_file.txt
Я соответствую определенным линиям. Почему мое регулярное выражение OR не совпадает? Заранее спасибо за помощь!
grep
regular-expression
dr.bunsen
источник
источник
egrep
вместоgrep -E
.Если вы хотите использовать несколько ветвей (
|
какor
), то для большей совместимости лучше явно сказать, что вы хотите использовать «современный RE», то есть. ERE.Для этого используйте grep -E :
Чтобы узнать больше о RE, ERE и всей «современной» истории ER см
man 7 regex
.В качестве альтернативы вы можете использовать
egrep
вместоgrep
, но, как вы можете читать изman grep
:(...)
источник