Buscar cadenas o patrones dentro de texto sin formato desde la terminal

agosto 20, 2020 , 0 Comments

about buscar cadenas o patrones

En el siguiente artículo vamos a ver algunas herramientas de línea de comandos que se utilizan para buscar cadenas o patrones coincidentes dentro de 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.

Las expresiones regulares son patrones utilizados para encontrar una determinada combinación de caracteres dentro de una cadena de texto. Las expresiones regulares proporcionan una manera muy flexible de buscar o reconocer cadenas de texto. Aun que en las siguientes líneas no veremos expresiones regulares, utilizaremos patrones o cadenas.

Buscar cadenas o patrones desde la terminal

Comando Grep

Grep es un acrónimo de Global Regular Expression Print. Se trata de una poderosa herramienta para la línea de comandos que resulta útil cuando se busca una cadena específica o un patrón en un archivo. Con grep vamos a poder utilizar una amplia gama de funciones, como las que nos explicó en este mismo blog un compañero hace un tiempo.

La sintaxis para usar el comando grep es bastante simple:

grep PATRON [RUTA AL ARCHIVO]

Por ejemplo, para buscar la cadena ‘Ubuntu‘ en un archivo que en este ejemplo llamaremos texto.txt, sin tener en cuenta la distinción entre mayúsculas y minúsculas, en una terminal (Ctrl+Alt+T) solo tendremos que ejecutar el comando:

grep -i texto

grep -i Ubuntu texto.txt

Comando sed

Sed es la abreviatura de Stream Editor. Se trata de otra herramienta útil para la terminal con la que podremos manipular texto en un archivo. Sed busca, filtra y reemplaza cadenas en un archivo dado.

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

El comando Sed se puede utilizar de la siguiente manera:

sed -OPCIONES COMANDO [RUTA AL ARCHIVO]

Por ejemplo, para reemplazar todas las apariciones de ‘Linux‘ en un texto por ‘GnuLinux‘, el comando a utilizar sería el siguiente:

Comando sed

sed 's/Linux/GnuLinux/g' texto.txt

Si lo que buscamos es redirigir la salida a un archivo en lugar de imprimirla en la terminal, vamos a utilizar el signo de redirección de la siguiente manera:

sed 's/Linux/GnuLinux/g' texto.txt > salida.txt

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

salida comando sed

Para ver más opciones, se pueden consultar las páginas de manual:

man sed

man sed

Ack

Ack es una herramienta de línea de comandos rápida escrita en Perl. Se considera un reemplazo amigable para la utilidad grep, que además genera resultados de una manera visualmente atractiva.

Para instalar ack en nuestro sistema tendremos que ejecutar en la terminal (Ctrl+Alt+T):

instalar ack

sudo apt install ack

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. Esta herramienta tiene la capacidad de distinguir archivos en función de sus extensiones.

La sintaxis del comando Ack sería algo como lo siguiente

ack [OPCIONES] PATRÓN [RUTA AL ARCHIVO]

Por ejemplo, para buscar el término Linux en un archivo, tendríamos que ejecutar:

comando ack búsqueda

ack Linux texto.txt

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

En el siguiente ejemplo, no se proporciona ningún archivo o directorio. Ack detecta automáticamente el archivo disponible en el directorio y busca el patrón coincidente:

ack búsqueda sin archivo

ack Linux

Ripgrep

Ripgrep es una utilidad multiplataforma para buscar patrones de expresiones regulares. Es más rápida que todas las herramientas de búsqueda mencionadas anteriormente, y busca en directorios de forma recursiva patrones coincidentes. También permite buscar tipos de archivos específicos. De forma predeterminada, ripgrep omitirá archivos binarios y archivos / directorios ocultos.

Para instalar ripgrep en el sistema, no hay más que ejecutar el siguiente comando en la terminal (Ctrl+Alt+T):

instalación de ripgrep

sudo apt install ripgrep

La sintaxis para usar ripgrep es bastante sencilla:

rg [OPCIONES] PATRÓN [RUTA AL ARCHIVO]

Si quisiésemos buscar la cadena ‘Linux‘ en archivos ubicados dentro del directorio actual, solo tendremos que ejecutar el comando:

man rg linux

rg Linux

Para ver más opciones los usuarios podemos utilizar las páginas de manual:

man rg

man rg

Silver Searcher

Para instalar esta herramienta, en Ubuntu no tendremos más que abrir una terminal (Ctrl+Alt+T) y escribir el comando:

instalación de silversearcher-ag

sudo apt install silversearcher-ag

Silver Searcher es una herramienta de búsqueda de código abierto y multiplataforma similar a ack pero con énfasis en la velocidad. Facilita la búsqueda de una cadena específica dentro de los archivos en el menor tiempo posible. La sintaxis a utilizar sería:

ag OPCIONES PATRÓN_DE_BÚSQUEDA /ruta/al/archivo

Por ejemplo, para buscar ‘Linux‘ en el archivo texto.txt, tendríamos que escribir en la terminal (Ctrl+Alt+T):

búsqueda con silversearcher

ag Linux texto.txt

Para ver más opciones podremos consultar las páginas de manual:

man silversearcher

man ag

Estas son solo algunas de las herramientas de línea de comandos más utilizadas para buscar, filtrar y manipular texto en Linux.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.