ack + grep + no coincide realmente con la cadena


1

Utilizo la herramienta ack (como grep pero más fuerte) para hacer coincidir cadenas en archivos

Por favor, eche un vistazo al siguiente ejemplo de ack

  ./ack -a 127.0.0.1 /var/ntp/ntpstats/file

   55305 57262.736 10.106.190.191 9624 0.000460 0.00127 0.00168

Quiero buscar solo la IP 127.0.0.1 en / var / ntp / ntpstats / file

pero ack devuelve la línea:

   55305 57262.736 10.106.190.191 9624 0.000460 0.00127 0.00168

Parece que ack coincide con 127.0.0.1 pero en realidad la línea no tiene la dirección 127.0.0.1

¿Alguien puede darme consejos sobre cómo combinar exactamente con la herramienta ack? (¿Quizás algunas banderas faltantes después de un reconocimiento?)

Gracias


ack no es más fuerte, ¡es más débil! :-)
Jonathan Hartley

Respuestas:


3

El .es un meta personaje en Perl. Significa "coincidir con cualquier personaje". Tienes tres opciones.

  • ack '127\.0\.0\.1' Esto cita cada período, haciendo que cada uno sea un período real.
  • ack '\Q127.0.0.1' En expresiones regulares de Perl, \Qsignifica "citar todos los metacaracteres después de la \ Q"
  • ack -Q 127.0.0.1 Como \Qes tan común, ack tiene el -Qinterruptor que significa lo mismo.

Además, te veo usando el -ainterruptor, presumiblemente para asegurarte de que coincidas con los archivos que no tienen una extensión. Esto es innecesario si especifica un archivo para buscar.


¡No todos los días alguien recibe una respuesta del autor de la herramienta por la que están preguntando! :)
daxelrod

Debería ser. Tengo una alerta de Google para ack. Otros autores pueden hacer lo mismo.
Andy Lester

2

A .en una expresión regular coincide con cualquier carácter único que no sea una nueva línea. Tendrá que escapar si desea que coincida con un período literal.

./ack -a '127\.0\.0\.1' /var/ntp/ntpstats/file

0

Solo para elaborar la respuesta de Ignacio:

55305 57262.736 10.106.190.191 9624 0.000460 0.00127 0.00168
                                                 ^^^^^^^^^

Como puede ver, con el carácter comodín (.) La parte anterior de la línea coincide con sus criterios de búsqueda.

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.