Ack busca cadenas literales [cerrado]


15

Estoy harto de tener que escapar de las cosas cuando quiero buscar parte de una etiqueta html.

¿Cómo puedo buscar exactamente lo que escribo sin tener que escapar de cosas?

p.ej

ack-grep 'console.log(foo'

Yo obtengo:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/

¿Usar un caparazón diferente? Ponlo entre comillas? Coloque su cadena de búsqueda en un archivo, sospecho que ack-grep puede obtener la cadena de un archivo. Quizás incluso pueda obtener la búsqueda a través de stdin.
Zoredache

@Zoredache Agregué un mejor ejemplo ... No quiero tener que escapar (... ¿y qué quieres decir con mejor shell?
probador

Me refiero a que todos los personajes de los que se queja son manejados por su shell (bash / zsh / lo que sea). El problema no tiene nada que ver con la herramienta. El problema es que el shell no envía lo que escribe.
Zoredache

Ah, creo que lo encontré ... -Q lo usa literalmente ...
probador

Respuestas:


18

Tienes que escapar de la expresión regular.

ack 'console\.log\(foo'

(Debería escapar del .para que no coincida con "consoleflog", porque .coincide con cualquier carácter individual)

Y si prefiere no hacerlo, haga esto para citar cada metacarácter automáticamente.

ack -Q 'console.log(foo'

2
\ Q no funciona en mi servidor. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

Me equivoqué con el \Qejemplo y lo eliminé de la respuesta. Gracias, @ Sébastien.
Andy Lester
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.