perl unix grep ack

perl - ack grep



ack-grep: caracteres que se escapan (4)

Dado que ack utiliza expresiones regulares de Perl, su problema se debe al hecho de que, en el lenguaje Perex de RegEx,? es un carácter especial que significa "la última coincidencia es opcional". Entonces, para lo que estás grepping es = precedido por un opcional <

¿Así que necesitas escapar de la ? Si eso solo es para ser un personaje regular.

Para escapar, hay dos enfoques, ya sea </?= O <[?]= ; algunas personas encuentran que la segunda forma de escapar (poner un carácter especial en una clase de personaje) es más legible que la barra invertida-escape.

ACTUALIZACIÓN Como Josh Kelley agregó amablemente en el comentario, una tercera forma de escape es usar el operador /Q que escapa a todos los siguientes caracteres especiales hasta que se encuentre /E , de la siguiente manera: /Q<?=/E

Mi objetivo es encontrar todas las " <?= " Ocurrencias con ack. ¿Cómo puedo hacer eso?

ack "<?="

No funciona Por favor, dime, ¿cómo puedo solucionar el escape aquí?


En lugar de tratar de recordar de qué caracteres deben escaparse, puede usar -Q para citar todo lo que necesita ser citado.


ack -Q "<?="

Esta es la mejor solución si desea buscar por texto simple.

(Si no es necesario encontrar por expresión regular.)


ack "</?="

? Es un operador de expresiones regulares, por lo que necesita escapar