3 votos

Perl RegEx en terminal Mac: grep -p "^([^^ \t ]* \t ){2}mipatrón \t " textfile.txt no funciona

Soy principiante en el uso de comandos de programación.

Por qué {2} no es funcional después de ([^ \t ]* \t ) en el terminal MacOS?

¿Hay algún sitio web que proporcione Perl RegEx que funcione en mac? Gracias.

0 votos

grep -p "^([^\t]*\t){2}mypattern\t" textfile.txt no devuelve ningún error en MacOS 10.12. Aparece un mensaje de error o la expresión regular no coincide como esperaba?

2voto

Steve Evans Puntos 155

RegExPlanet ofrece un Página de prueba de expresiones regulares para Perl . Esta página funciona con Safari en MacOS 10.12.

Usted puede encontrar que grep incluido con macOS no incluye toda la funcionalidad que deseas. Si es así, pruebe instalación de grep de Homebrew o MacPorts.

2voto

Michael Zhou Puntos 167

bsd grep no utiliza expresiones regulares de Perl. Por favor, lea man grep y observe lo que el -p lo hace. Otra vez, man 7 re_format explica cómo funciona regex en macOS con herramientas como grep y sed .

En su expresión regular, el carácter \t no se interpreta como el carácter de control de tabulación. Así que tendrá que escribir el carácter de tabulación literal ( control + v, tabulación ) en su lugar -

grep -E '^([^   ]*      ){2}mypattern ' FILE

o puede utilizar el entrecomillado ansi-c (Las palabras de la forma $'cadena' se tratan de forma especial. La palabra se expande a cadena, con caracteres backslash-escapados reemplazados según lo especificado por el estándar ANSI C). -

grep -E $'^([^\t]*\t){2}mypattern\t' FILE

También puede utilizar perl directamente -

perl -ne  'print if /^([^\t]*\t){2}mypattern\t/' FILE

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X