
¿Alguien puede explicar por qué esto no funciona?
grep -ne '[A-Za-z]{1,30}\ [A-Z][a-z]{1,30}\W[A-Za-z]{1,30}\ [0-9]{1,30}\W[0-9]{5}\ [A-Za-z]{1,30}(\ [A-Za-z]{1,30})?' emails
Respuesta1
En primer lugar, está utilizando la sintaxis de expresión regular extendida (ERE) {}
como ()
y ?
. Agregue la opción -E
para usar ERE o escape {}
y ()
con barras invertidas y reemplace ?
así:grep -ne '[A-Za-z]\{1,30\} [A-Z][a-z]\{1,30\}\W[A-Za-z]\{1,30\} [0-9]\{1,30\}\W[0-9]\{5\} [A-Za-z]\{1,30\}\( [A-Za-z]\{1,30\}\)\{0,1\}' emails
En segundo lugar, estás escapando de espacios con barras invertidas entre comillas simples. Si bien la mayoría de las implementaciones grep
manejarán esto como espacios simples, el estándar posix lo considera indefinido:La interpretación de un carácter ordinario precedido por una barra invertida ( '\' ) no está definida.
Puede haber problemas adicionales, pero no podemos saberlo sin conocer la sintaxis de su archivo y lo que deseagrep