IsProto

Soluciones para Redes e Internet

Grep: Guía de Uso con Ejemplos en Linux

grep

Grep es una utilidad muy sencilla y poderosa de Linux para realizar búsquedas. Ésta herramienta realiza búsquedas dentro de un archivo para determinada coincidencia.

Aquí te mostramos una Guía de Uso con ejemplos en Linux para las dos herramientas.

Grep – Descripción

¿Qué es Grep? Es una utilidad básica de Linux, utilizada para encontrar coincidencias dentro de un archivo o cadena de texto de acuerdo al patrón especificado.

El patrón utilizado para grep normalmente es una cadena de texto, la cuál es el texto que se quiere buscar dentro del archivo, el cuál examina un archivo para buscar la coincidencia y al hallarla, muestra la línea del archivo en donde se encuentra tal coincidencia.

La utilidad está incluida en cualquier distribución de Linux y se encuentra dentro de las utilidades del sistema, por lo tanto está disponible desde la instalación del sistema operativo y no es necesario instalar ningún paquete adicional.

Grep – Sintaxis

El uso de la herramienta grep es sumamente sencillo, y se puede utilizad directamente desde la línea de comandos, o bien a través de un shell script.

Grep – Uso con pipe |

A través del operador pipe (|) puedes realizar la búsqueda directamente de una cadena de texto dentro de un fichero, gracias a que pasa el resultado de la expresión mostrada como el primer parámetro para la otra.

La sintaxis de uso de grep con pipe es muy sencilla, en forma general podemos mostrarlo así:

cat nombre_archivo | grep ‘cadena’

El comando anterior cat se encarga de imprimir en pantalla (o stdout) el contenido del archivo indicado, en donde al agregarle vía pipe el parámetro del resultado del comando grep, le indicamos que solamente muestre las líneas de texto del archivo que contengan dicha cadena.

A modo de ejemplo, si tenemos el archivo hola.txt, cuyo contenido es el siguiente:

¡hola mundo!
Bienvenido a Linux
Un mundo nuevo te aguarda

Y si escribimos el comando:

cat hola.txt | grep ‘mundo’

Obtenemos como resultado en pantalla todas las líneas de texto que contienen las ocurrencias de la cadena ‘mundo‘ en el archivo hola.txt, es decir, se imprimen en pantalla las líneas: ¡hola mundo! y Un mundo nuevo te aguarda, que son las líneas que contienen la ocurrencia ‘mundo‘.

grep

Si queremos escribir en un nuevo archivo el resultado, debemos utilizar el stdout (símbolo > “mayor qué”), seguido del nombre del nuevo archivo que debe contener el resultado. Para el ejemplo anterior, el comando utilizado para éste procedimiento es:

cat hola.txt | grep ‘mundo’ > solo_hola.txt

Nota: Al usar pipe se permite que grep se pueda utilizar en muchos procesos y aplicaciones, incluyendo ps, netstat, etc.

Grep – Uso con stdin

Otra forma de utilizar grep es utilizando el stdin “menor qué” (<). A través de éste símbolo, se toma como parámetro de entrada para el comando el archivo mostrado después del símbolo.

Tomando como referencia el ejemplo de la sección anterior llamado “hola.txt”, el comando a utilizar es el siguiente:

grep ‘mundo’ < hola.txt

Obteniendo exactamente los mismos resultados que el comando con pipe.

Grep – Contar ocurrencias de cadena

Tal vez no queremos ver los contenidos de las cadenas (tal vez sean muchas ocurrencias), sino solamente queremos contar el número de ocurrencias de determinada cadena en un archivo.

Para contar el número de ocurrencias de determinada cadena en un archivo, simplemente utilizamos la opción -c:

grep -c ‘cadena’ archivo

Y nos muestra el número de ocurrencias de ‘cadena’ en nuestro archivo. Tomando el ejemplo que hemos estado manejando, el comando sería:

grep -c ‘mundo’ hola.txt

Y si solamente queremos que nos muestre si existe la cadena (sin contar el número de ocurrencias), podemos utilizar la opción -q. En donde de acuerdo al ejemplo, el comando sería el siguiente:

grep -q ‘mundo’ hola.txt && echo ‘Encontrado’

En donde obtenemos ‘Encontrado’ si fue hallada la coincidencia en el archivo especificado.

grep

Grep – Búsqueda recursiva

La búsqueda recursiva es bastante útil cuando queremos buscar la ocurrencia de determinada cadena, pero no recordamos en qué archivo se encuentra ubicada la cadena.

Para realizar una búsqueda exhaustiva en determinada ruta, utilizamos el comando:

grep -rnw ruta -e ‘cadena’

Por ejemplo si queremos buscar la cadena ‘mundo’ en el directorio actual, escribimos el siguiente comando:

grep -rnw . -e ‘mundo’

Y va a mostrar todas las coincidencias de la cadena ‘mundo’ existentes en el directorio actual.

Debido a que se realiza una búsqueda exhaustiva en todos los subdirectorios anidados a la ruta especificada para ejecutar la consulta, el proceso puede demorar varios minutos, hasta horas, dependiendo de la ubicación en donde realicemos la búsqueda.

Awk – Realizar búsquedas de patrones

Awk es una utilidad alterna cuya función también es realizar búsqueda de patrones. La función de awk es realizar una acción determinada con las ocurrencias obtenidas, siendo en sí un lenguaje de programación que opera con los comandos.

El funcionamiento de awk sobre los comandos se realiza de una forma muy sencilla, simplemente agregamos el comando a utilizar de acuerdo a una sintaxis muy simple de utilizar:

awk ‘acciones’ archivo.txt

En cuanto a acciones, se refieren a los eventos realizados para el archivo de texto indicado, generalmente acciones de stdout, es decir imprimir en pantalla.

Awk – Ejemplos de uso

Algunos ejemplos de uso de awk son los siguientes (Nota, $0 es el primer argumento a imprimir del resultado)

  • Imprimir todo el texto de un archivo:

awk ‘{print $0}’ archivo.txt

  • Imprimir las líneas que contienen la palabra ‘mundo’:

awk ‘/mundo/ {print $0}’ archivo.txt

awk

Sed – Otra alternativa de búsqueda de patrones

Existen también otras alternativas para buscar patrones, y entre éstas alternativas tenemos sed.

Sed tiene ventajas adicionales, por ejemplo puede modificar los contenidos del flujo para mostrar los resultados en algún formato en particular, o bien guardar el stdout en un nuevo archivo utilizando el símbolo mayor qué (>).

La sintaxis para utilizar sed es la mostrada a continuación:

sed ‘acciones’ archivo.txt

Entre las acciones posibles de realizar con sed se encuentran: la búsqueda de un patrón en un archivo, la sustitución simple de una cadena de texto en un archivo, entre otras operaciones de operaciones básicas sobre cadenas de un archivo con salida en el mismo archivo, o bien stdout.

Algunos ejemplos de uso son los siguientes:

  • Sustitución simple de un texto dentro del mismo archivo

sed -i -e ‘s/mundo/linux/g’ hola.txt

Con el comando anterior, obtenemos la sustitución de todos los textos que coincidan con la cadena ‘mundo’ hacia un texto ‘linux’, tal y como mostramos el resultado en la imagen.

grep

Si deseas agregar un guión (-) al inicio de cada línea de tu archivo, deberás ejecutar el comando:

sed ‘s/^/-/g’ hola.txt

Conclusiones – Grep y alternativas

Como podrás darte cuenta, grep es un excelente buscador de cadenas de texto dentro de un archivo, el cual es una herramienta indispensable cuando manejas contenidos dentro de archivos al utilizar cualquier script.

Con la combinación de otras herramientas de modificación y sustitución de cadenas, entre ellas awk y sed, prácticamente tendrás control total sobre las cadenas de texto dentro de los archivos, para hacer las operaciones que consideres necesarias de realizar dentro de éstos.