Perl RegEx en terminal de Mac: grep -p “^ ([^ \ t] * \ t) {2} mypattern \ t” textfile.txt no funciona

1

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

¿Por qué {2} no funciona después de ([^ \ t] * \ t) en el terminal macOS?

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

    
pregunta Kylie M. 30.08.2017 - 07:23

2 respuestas

1

RegExPlanet ofrece una página de prueba de expresión regular para Perl . Esta página funciona con Safari en macOS 10.12.

Es posible que grep incluido con macOS no incluya todas las funciones que desea. Si es así, intente instalando grep desde Homebrew o MacPorts.

    
respondido por el Graham Miln 30.08.2017 - 10:09
1

bsd grep no usa expresiones regulares de perl. Lea man grep y observe lo que hace la opción -p . Una vez más, man 7 re_format explica cómo funciona la expresión regular 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 pestaña. Por lo tanto, deberá escribir el carácter literal de la pestaña (control + v, pestaña) en su lugar -

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

o puede usar citas de ansi-c (las palabras de la forma $ 'cadena' se tratan de manera especial. La palabra se expande a cadena, con caracteres de escape de barra diagonal sustituida según lo especificado por el estándar ANSI C). -

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

También puedes usar perl directamente -

perl -ne  'print if /^([^\t]*\t){2}mypattern\t/' FILE
    
respondido por el fd0 30.09.2018 - 12:29

Lea otras preguntas en las etiquetas