Ack: un mejor Grep

Ack: un mejor Grep

Si tiene alguna experiencia en el uso de la línea de comandos de Linux, sin duda ha utilizado «grep» para buscar cadenas de texto, ya sea que provengan de archivos o de comandos. Hay una mejor manera de hacerlo, y se llama Ack.

Ack es un programa escrito en Perl que pretende ser un reemplazo del venerable viejo Grep, que existe desde principios de los años 70. (En caso de que se lo pregunte, grep significa «Impresión de expresión regular global»).

El autor de Ack, Andy Lester, está tan seguro de que Ack es mejor que grep, que el sitio web de su proyecto se llama mejorthangrep.com.

reconocer

Puedes conseguirlo de varias maneras. Si es un usuario regular de Perl, puede usar CPAN para instalarlo, tal vez con Perlbrew como describí en un artículo anterior. Cpanminus es un popular cliente ligero de CPAN. Para instalar Ack con él, solo usa este comando:

Por supuesto, si está usando Ubuntu y desea instalarlo a través de apt-get, también puede hacerlo, aunque Ubuntu tiende a estar detrás de la última versión del desarrollador. Solo usa este comando:

sudo apt-get install ack-grep

Puede usar Ack de la misma manera que puede usar grep. Por ejemplo, para encontrar el nombre «expertogeek» en el archivo mte.txt, simplemente use este comando:

ack maktecheasier mte.txt

O puede redirigir la salida a él:

Una de las características principales que notarán los nuevos usuarios es que le da un bonito toque visual a su cadena de búsqueda en el resultado, lo que significa que puede ver exactamente si realmente está coincidiendo con lo que está buscando.

Si ha buscado con una expresión regular complicada, puede ver qué coincide exactamente al mismo tiempo que detecta falsos positivos.

Otra característica útil es que Ack busca archivos automáticamente de forma recursiva. Esto significa que Ack no solo buscará todos los archivos en un directorio si le da uno, si ese directorio contiene otros directorios, también buscará en esos, hasta que llegue al final del árbol de directorios. Esto es especialmente útil para los programadores (y si es uno, probablemente ya sepa qué significa recursivo), pero también es muy útil si está buscando un patrón en un montón de archivos de texto sin formato.

Y hablando de programación, puede limitar su búsqueda a una variedad de lenguajes de programación populares. Aquí hay un ejemplo usando Perl:

ack --perl 'somepattern' /my/directory

Puede encontrar aún más ejemplos en la sección «Tipos de archivos de Ack» del documentación.

Dado que Ack está escrito en Perl, es automáticamente compatible con las expresiones regulares de Perl. Las expresiones regulares son una especie de búsqueda de texto superprecisa que le permite encontrar patrones de texto muy específicos.

La característica mejor y más divertida es el «--thpppt”, que invoca un dibujo artístico ASCII de Bill the Cat:

_   /|
\'o.O'
=(___)=
   U    ack --thppt!

Dado que Unix y Linux hacen que sea relativamente fácil escribir programas, es posible crear fácilmente reemplazos para programas comunes del sistema. Ack es uno de los que muestra la creatividad de las comunidades Perl y Unix/Linux.

Experto Geek - Tu Guía en Tendencias Tecnológicas