El asterisco es solo repetition operator, pero necesita decirle lo que repite. /*abc*/
coincide con una cadena que contiene ab y cero o más c (porque el segundo * está en la c; el primero no tiene sentido porque no hay nada para repetir). Si quiere hacer coincidir algo, necesita decir .*
- el punto significa cualquier carácter (within certain guidelines). Si solo quiere que coincida con abc, puede decir grep 'abc' myFile
. Para su coincidencia más compleja, necesita usar .*
- grep 'abc.*def' myFile
coincidirá con una cadena que contenga abc seguido de def con algo opcionalmente en medio.
de actualización basado en un comentario:
*
en una expresión regular no es exactamente el mismo que * en la consola. En la consola, * es parte de un glob construct, y solo actúa como un comodín (por ejemplo, ls *.log
mostrará una lista de todos los archivos que terminan en .log). Sin embargo, en expresiones regulares, * es un modificador, lo que significa que solo se aplica al personaje o grupo que lo precede. Si desea que * en expresiones regulares actúe como un comodín, debe usar .*
como se mencionó anteriormente; el punto es un carácter comodín, y la estrella, al modificar el punto, significa encontrar uno o más puntos; es decir. encuentra uno o más de cualquier personaje.
grep sí doesn' t admite comodines en la mayoría de las plataformas. Tienes que usar egrep para usar comodines. Los shells tienen una sintaxis diferente. "*" en el shell es. En egrep, es un operador que dice "0 a muchos de la entidad anterior". En grep, es solo un personaje regular. –
PanCrit
@PanCrit: '*' significa lo mismo en grep y egrep: es un * cuantificador * que significa cero o más del átomo precedente. Ese es un concepto completamente diferente al * wildcards * utilizado por el shell. –