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, profundicemos.

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 específica o un patrón en un archivo.

Grep incluye 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:

  • Search for strings or matching patterns in a file.
  • Search for strings or matching patterns in Gzipped files.
  • Count the number of string matches.
  • Print the line numbers that contain the string or pattern.
  • Search recursively for the string in directories.
  • Perform a reverse search ( i.e. Display results of strings not matching the search criteria).
  • Ignore case sensitivity when searching for strings.

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

Sed, abreviatura de Stream Editor, es otra herramienta útil de línea de comandos para manipular texto en un archivo de texto. Sed busca, filtra y reemplaza cadenas en un archivo dado 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.

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. Comando Awk

Awk es un lenguaje de programación de pleno derecho 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 siguientes, 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á los archivos binarios/archivos y directorios ocultos. Además, tenga en cuenta que, de forma predeterminada, no buscará archivos 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.