Las 6 mejores herramientas de CLI para buscar datos de texto sin formato utilizando expresiones regulares


Esta guía ofrece un recorrido por algunas de las mejores herramientas de línea de comandos que se utilizan para buscar cadenas o patrones coincidentes en archivos de texto. Estas herramientas se utilizan generalmente junto con las expresiones regulares, abreviadas como REGEX, que son cadenas únicas para describir un patrón de búsqueda.

Sin más preámbulos, vamos a sumergirnos.

1. Comando Grep

En primer lugar, está la herramienta de utilidad grep: es un acrónimo de Global Regular Expression Print, es una poderosa herramienta de línea de comandos que resulta útil cuando se busca una cadena o patrón específico en un archivo.

Grep se envía con distribuciones modernas de Linux de forma predeterminada y le brinda la flexibilidad de devolver varios resultados de búsqueda. Con grep, puede realizar una amplia gama de funciones como:

  • Busque cadenas o patrones coincidentes en un archivo.
  • Busque cadenas o patrones coincidentes en archivos comprimidos con Gzip.
  • Cuente el número de coincidencias de cadenas.
  • Imprima los números de línea que contienen la cadena o el patrón.
  • Busque de forma recursiva la cadena en directorios.
  • Realizar una búsqueda inversa (es decir, mostrar resultados de cadenas que no coincidan con los criterios de búsqueda).
  • Ignore la distinción entre mayúsculas y minúsculas al buscar cadenas.

La sintaxis para usar el comando grep es bastante simple:

$ grep pattern FILE

Por ejemplo, para buscar la cadena "Linux" en un archivo, digamos hola.txt sin tener en cuenta la distinción entre mayúsculas y minúsculas, ejecute el comando:

$ grep -i Linux hello.txt

Para obtener más opciones que puede usar con grep, simplemente lea nuestro artículo que muestra ejemplos de comandos grep más avanzados.

2. comando sed

manipulación de texto en un archivo de texto. Sed busca, filtra y reemplaza cadenas en un archivo determinado de una manera no interactiva.

De forma predeterminada, el comando sed imprime la salida en STDOUT (Salida estándar), lo que implica que el resultado de la ejecución se imprime en el terminal en lugar de guardarse en un archivo.

El comando Sed se invoca de la siguiente manera:

$ sed -OPTIONS command [ file to be edited ]

Por ejemplo, para reemplazar todas las instancias de "Unix" con "Linux", invoque el comando:

$ sed 's/Unix/Linux' hello.txt

Si desea redirigir la salida en lugar de imprimirla en el terminal, use el signo de redirección (>) como se muestra.

$ sed 's/Unix/Linux' hello.txt > output.txt

La salida del comando se guarda en el archivo output.txt en lugar de imprimirse en la pantalla.

Para ver más opciones que se pueden usar, revise una vez más las páginas de manual.

$ man sed

3. Comando de confirmación

Ack es una herramienta de línea de comandos rápida y portátil escrita en Perl. Ack se considera un reemplazo amigable para la utilidad grep y genera resultados de una manera visualmente atractiva.

El comando Ack busca en el archivo o directorio las líneas que contienen la coincidencia para los criterios de búsqueda. Luego resalta la cadena correspondiente en las líneas.
Ack tiene la capacidad de distinguir archivos en función de sus extensiones de archivo y, hasta cierto punto, el contenido de los archivos.

Sintaxis del comando Ack:

$ ack [options] PATTERN [FILE...]
$ ack -f [options] [DIRECTORY...]

Por ejemplo, para buscar el término de búsqueda Linux, ejecute:

$ ack Linux hello.txt

La herramienta de búsqueda es bastante inteligente y, si el usuario no proporciona ningún archivo o directorio, busca en el directorio y subdirectorios actuales el patrón de búsqueda.

En el siguiente ejemplo, no se ha proporcionado ningún archivo o directorio, pero ack ha detectado automáticamente el archivo disponible y ha buscado el patrón coincidente proporcionado.

$ ack Linux

Para instalar ack en su sistema, ejecute el comando:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
$ sudo dnf install ack-grep    [On CentOS/RHEL]

4. Awk Command

Awk es un lenguaje de programación completo y también una herramienta de procesamiento de texto y manipulación de datos. Busca archivos o programas que contienen el patrón de búsqueda. Cuando se encuentra la cadena o el patrón, awk actúa sobre la coincidencia o la línea e imprime los resultados en STDOUT.

El patrón AWK se encierra entre llaves, mientras que todo el programa se encierra entre comillas simples.

Tomemos el ejemplo más simple. Supongamos que está imprimiendo la fecha de su sistema como se muestra:

$ date

Suponga que solo desea imprimir el primer valor, que es el día de la semana. En ese caso, canalice la salida a awk como se muestra:

$ date | awk '{print $1}'

Para mostrar los valores subsiguientes, sepárelos con una coma como se muestra:

$ date | awk '{print $1,$2}'

El comando anterior mostrará el día de la semana y la fecha del mes.

Para obtener más opciones que puede usar con awk, simplemente lea nuestra serie de comandos awk.

5. Buscador de plata

El buscador de plata es una herramienta de búsqueda de código abierto y multiplataforma similar a ack pero con énfasis en la velocidad. Le facilita la búsqueda de una cadena específica dentro de los archivos en el menor tiempo posible:

Sintaxis:

$ ag OPTIONS search_pattern /path/to/file

Por ejemplo, para buscar la cadena "Linux" en un archivo hello.txt, invoque el comando:

$ ag Linux hello.txt

Para opciones adicionales, visite las páginas de manual:

$ man ag

6. Ripgrep

Por último, tenemos la herramienta de línea de comandos ripgrep. Ripgrep es una utilidad multiplataforma para buscar patrones de expresiones regulares. Es mucho más rápido que todas las herramientas de búsqueda mencionadas anteriormente y busca en directorios de forma recursiva patrones coincidentes. En cuanto a velocidad y rendimiento, ninguna otra herramienta destaca que Ripgrep.

De forma predeterminada, ripgrep omitirá archivos binarios/archivos y directorios ocultos. Además, tenga en cuenta que, de forma predeterminada, no buscará archivos que sean ignorados por los archivos .gitignore/.ignore/.rgignore.

Ripgrep también le permite buscar tipos de archivos específicos. Por ejemplo, para limitar su búsqueda a archivos Javascript, ejecute:

$ rg -Tsj

La sintaxis para usar ripgrep es bastante fácil:

$ rg [OPTIONS] PATTERN [PATH...]

Por ejemplo. Para buscar instancias de la cadena "Linux" en archivos ubicados dentro del directorio actual, ejecute el comando:

$ rg Linux

Para instalar ripgrep en su sistema, ejecute los siguientes comandos:

$ sudo apt install ripgrep      [On Debian/Ubuntu]
$ sudo pacman -S ripgrep        [On Arch Linux]
$ sudo zypper install ripgrep   [On OpenSuse]
$ sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Para opciones adicionales, visite las páginas de manual:

$ man rg

Estas son algunas de las herramientas de línea de comandos más utilizadas para buscar, filtrar y manipular texto en Linux. Si tiene otras herramientas que cree que hemos dejado de lado, háganoslo saber en la sección de comentarios.