Búsqueda de sitios web

Las 6 mejores herramientas 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 suelen utilizar junto con 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, que es un acrónimo de Global Regular Expression Print y es una potente herramienta de línea de comandos que resulta útil a la hora de buscar una cadena o un patrón específico en un archivo. .

Grep viene con distribuciones modernas de Linux de forma predeterminada y le brinda la flexibilidad de devolver varios resultados de búsqueda. Con grep, puedes 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 patrón.
  • Busque recursivamente la cadena en directorios.
  • Realice una búsqueda inversa (es decir, muestre los resultados de las cadenas que no coinciden con los criterios de búsqueda).
  • Ignore la distinción entre mayúsculas y minúsculas al buscar cadenas.

La sintaxis para utilizar el comando grep es bastante simple:

grep pattern FILE

Por ejemplo, para buscar la cadena 'Linux' en un archivo, digamos, hello.txt ignorando 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 más avanzados del comando grep.

2. comando sed

Sed, abreviatura de Stream Editor, es otra útil herramienta de línea de comandos para manipular texto en un archivo de texto. Sed busca, filtra y reemplaza cadenas en un archivo determinado de forma no interactiva.

De forma predeterminada, el comando sed imprime la salida en STDOUT (Standard Out), lo que implica que el resultado de la ejecución se imprime en la terminal en lugar de siendo guardado 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 la 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 utilizar, consulte nuevamente 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 con los criterios de búsqueda. Luego resalta la cadena coincidente en las líneas.
Ack tiene la capacidad de distinguir archivos según sus extensiones y, hasta cierto punto, el contenido de los archivos.

Sintaxis del comando de confirmación:

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 el patrón de búsqueda en el directorio y subdirectorios actuales.

En el siguiente ejemplo, no se proporcionó ningún archivo o directorio, pero ack detectó automáticamente el archivo disponible y buscó 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 completo y también una herramienta de procesamiento de texto y manipulación de datos. Busca archivos o programas que contengan el patrón de búsqueda. Cuando se encuentra la cadena o patrón, awk toma medidas en la coincidencia o línea e imprime los resultados en STDOUT.

El patrón AWK está entre llaves mientras que todo el programa está entre comillas simples.

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

date

Supongamos 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 valores posteriores, sepárelos usando 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 puedes usar con awk, simplemente lee nuestra serie de comandos awk.

5. Buscador de plata

Silver Searcher es una herramienta de búsqueda de código abierto y multiplataforma similar a ack pero con énfasis en la velocidad. Le facilita buscar 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 invoca 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 directorios de forma recursiva en busca de patrones coincidentes. En términos de velocidad y rendimiento, ninguna otra herramienta destaca más 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 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 sencilla:

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 omitido, háganoslo saber en la sección de comentarios.