Grep es un potente comando de GNU/Linux para utilizarlo en la línea de comandos. Veamos algunos usos.

La consola o línea de comandos de GNU/Linux es una de las herramientas más potentes. Pero a la vez es la más temida y quizás evitada por muchos usuarios ya llevemos mucho tiempo o seamos unos recién llegados.

Es bueno saber que existen muchas herramientas muy útiles, saber sacarles provecho y saber para qué utilizarlas. Utilizadas de una en una proporcionan un buen arsenal para muchas tareas.

Utilizadas en conjunto mediante “tuberías” o en scripts entonces se vuelven letales y no tienen rival.

Hoy vamos a descubrir algunas de las cosas que puede hacer el comando grep. Este comando se utiliza para buscar cadenas de texto en un archivo o archivos en un directorio o directorios. Puede buscar una cadena, expresiones regulares, etc.

Vamos a ver unos cuantos ejemplos muy sencillos para iniciarnos en el manejo de la herramienta. Podéis seguir los ejemplos en la siguiente captura de la consola (abre la captura en una nueva pestaña para poder seguirla y poder leer el artículo):

Vayamos desgranando lo que va ocurriendo en la captura.

Primero he creado un directorio de ejemplo y un archivo de texto con texto para utilizarlo en el ejemplo. Hecho eso he ido viendo probando algunas de las opciones del comando grep para realizar distintas búsquedas en el archivo.

Hay que poner atención a los detalles y ver qué opciones utilizo y cual es el resultado que nos da grep.

Lo primero que hago es buscar la cadena “este” dentro del archivo de texto. Lo que me da 0 resultados. Después hago lo mismo pero añadiendo la opción -i. Con esto lo que le decimos a grep es que no tenga en cuenta mayúsculas o minúsculas a la hora de buscar texto y ahora sí me da un resultado.

Después hago una búsqueda de la letra “b” con la opción -i para que no distinga entre mayúsculas y minúsculas y añado varias opciones para que muestre no sólo la línea con el resultado si no además líneas de contexto:

-A1 → A(after) muestra el número de líneas (1 en mi ejemplo) después de la línea con la coincidencia.

→ A(after) muestra el número de líneas (1 en mi ejemplo) después de la línea con la coincidencia. -B1 → B(efore) muestra el número de líneas (1 en mi ejemplo) antes de la línea con la coincidencia.

→ B(efore) muestra el número de líneas (1 en mi ejemplo) antes de la línea con la coincidencia. -C1 → C(context) muestra el número de líneas (1 en mi ejemplo) del contexto.

También podemos añadir y utilizar el comando -n que nos mostrará las coincidencias encontradas precedidas por el número de línea donde se encuentra en el texto.

Pero grep no es sólo capaz de buscar en un archivo, es capaz de hacerlo en todos aquellos archivos de un directorio. Para eso deberemos especificarlo mediante -R (recursivo incluso en los enlaces simbólicos).

Con grep -R se nos mostrará el nombre del archivo donde se encuentra la coincidencia. Al especificar la opción -R no tiene sentido especificar un nombre de archivo ya que lo hará en todos los del directorio de manera recursiva.

Pero grep no es capaz sólo de buscar una cadena que le demos. Es capaz de buscar expresiones regulares que seamos capaces de componer utilizando para ello la opción -E y escribiendo la expresión dentro de comillas simples.

En el ejemplo le digo a grep que me muestre tanto la cadena bu como bú. Y después lo mismo pero sin importar si es mayúsculas o minúsculas.

La opción -v sirve para invertir la búsqueda. Es decir mostrará aquello que no coincida con lo que le hemos pedido.

La opción -c nos sirve para que nos muestre las cadenas que coinciden y que sólo nos de el número de coincidencias que existen.

Como todos los comandos de GNU/Linux grep se puede utilizar en compañía de otros comandos mediante “tuberías” lo que hace que las posibilidades se expandan.

En el ejemplo pasamos la salida del comando grep a wc -l para que nos cuente el número de líneas que coinciden. Puedes utilizarlo con find para encontrar un archivo y buscar en él, etc…

Espero que esta pequeña aproximación a grep te haya servido y te sea útil para aprender. Te remito a la página de ayuda mediante grep –help a los manuales man grep para ampliar los conocimientos.

Enlaces de interés

———————————————————-