Problema de expresiones regulares Grep 'OR'

Pregunta:

Estoy tratando de usar grep con una expresión regular para encontrar líneas en un archivo que coincidan con 1 de 2 cadenas posibles. Aquí está mi grep:

$ grep "^ID.*(ETS|FBS)" my_file.txt

El grep anterior no devuelve ningún resultado. Sin embargo, si ejecuto:

$ grep "^ID.*ETS" my_file.txt  

o

$ grep "^ID.*FBS" my_file.txt  

Coincido con líneas específicas. ¿Por qué mi expresión regular OR no coincide? ¡Gracias de antemano por la ayuda!

Respuesta:

Con expresiones regulares normales, los caracteres ( , | y ) deben escaparse. Entonces deberías usar

$ grep "^ID.*\(ETS\|FBS\)" my_file.txt

No necesita los escapes cuando usa la opción de expresión regular extendida ( -E ). Ver man grep , sección " Basic vs Extended Regular Expressions ".

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım