Ack: Un mejor Grep

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

Ack es un programa escrito en Perl que pretende ser un sustituto del venerable y viejo Grep, que existe desde principios de los 70. (En caso de que te lo estés preguntando, grep significa «Global Regular Expression Print.»)

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 betterthangrep.com .

Ack: Un mejor Grep

Puede obtenerlo de varias maneras. Si eres un usuario habitual de Perl, puedes usar CPAN para instalarlo, quizás con Perlbrew como lo describí en un artículo anterior. Cpanminus es un popular cliente CPAN ligero. Para instalar Ack con él, sólo tiene que usar este comando:

cpanm App::Ack

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

sudo apt-get install ack-grep

Puedes usar Ack de la misma manera que puedes usar grep. Por ejemplo, para encontrar el nombre «maketecheasier» en el archivo mte.txt, utilice este comando:

ack maktecheasier mte.txt

O puede redirigir la salida hacia él:

cat | ack maketecheasier

Una de las principales características que los nuevos usuarios notarán es que le da un buen realce visual a su cadena de búsqueda en la salida, lo que significa que usted puede ver exactamente si realmente coincide con lo que está buscando.

Si ha realizado una búsqueda con una expresión regular complicada, puede ver qué es exactamente lo que coincide, a la vez que detecta falsos positivos.

Otra característica útil es que Ack busca automáticamente archivos recursivamente. Esto significa que Ack no sólo buscará todos los archivos de un directorio si le da uno, si ese directorio contiene otros directorios, sino que también los buscará, hasta que llegue al final del árbol de directorios. Esto es especialmente útil para los programadores (y si usted es uno de ellos, probablemente ya sabe lo que significa recursivo), pero también es muy útil si está buscando un patrón en un montón de archivos de texto plano.

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» de la sección documentación .

Como 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 mejor y más divertida característica es la opción «–thpppt», que llama a un dibujo ASCII de Bill the Cat:

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

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *