`ack` no muestra números de línea en un solo archivo


16

Estoy usando ack para buscar una cadena. Cuando lo ejecuto sin un argumento de archivo, obtengo números de línea:

$> ack function
themes/README.txt
7:Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

sites/default/default.services.yml
48:    # - The dump() function can be used in Twig templates to output information

...

Pero cuando trato de especificar un archivo, no obtengo números de línea.

$> ack function themes/README.txt
Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

Busqué en Google un interruptor, pero no encontré resultados. ¿Cómo obtengo un reconocimiento para mostrarme números de línea en los resultados de un solo archivo?

Respuestas:


21

Cuando no proporcione ningún archivo, ackbuscará todos los archivos en el directorio y subdirectorios actuales. Si un archivo contiene un patrón coincidente, ackimprima ese nombre de archivo, el número de línea y la línea que coincide con el patrón.

Este comportamiento no se aplica a un archivo (consulte la documentación de confirmación , busque la -Hopción).

Como cuando ackno tiene una -nlínea de opción grep, que imprimirá la línea coincidente con su número de línea relativo, tiene dos opciones para solucionar este problema.

Forzar ackimprimir nombre de archivo con -H:

ack -H pattern file

o pasando /dev/nullcomo el segundo archivo:

ack pattern file /dev/null

7

Puedes probar con la opción --with-filename:

ack --with-filename 'function' themes/README.txt

Este problema se plantea como error y el problema se ha movido aquí .


5

Debería haber una opción para esto. Pero si no lo hay, puedes engañarte ackpara pensar que hay dos archivos para buscar, pasando un extra /dev/nullen la línea de comando:

ack function themes/README.txt /dev/null

En una nota al margen, el mismo truco se puede usar para grep(1)mostrarle un nombre de archivo incluso cuando está buscando un solo archivo:

grep function themes/README.txt /dev/null
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.