grep: problema con expresión regular

grep: problema con expresión regular

¿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 -Epara 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 grepmanejará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

información relacionada