Algunos comandos básicos de Grep
Linux tiene una gran variedad de herramientas que la mayoría de nosotros desconocemos y esto es debido a que en gran parte no todos estamos acostumbrados a utilizar la terminal y esto no es malo dado que no es un requisito forzoso, simplemente que preferimos utilizar una interfaz gráfica ya que nos facilita la labor.
Un proceso muy cotidiano que realizamos casi a diario es la búsqueda en el sistema y eso se refleja con el simple uso del buscado en nuestro gestor de ficheros favorito al realizar la búsqueda de un documento, imagen, archivo, etc. desde el recuadro de búsqueda.
Pero también podemos utilizar la terminal para realizar esto y a decir verdad esta herramienta es mucho más potente sabiéndola utilizar.
En esta pequeña sección compartiré con ustedes el funcionamiento de “grep” con el que podremos buscar un texto o patrón específico en un archivo o en un directorio completo. El uso más común es para buscar rápidamente en un archivo las apariciones de un patrón, que puede ser en texto sin formato o en forma de una expresión regular. Aquí, los patrones utilizados serán texto simple en lugar de expresiones regulares.
Básicamente grep se compone de la siguiente manera:
grep loquebuscas tipoarchivo
Donde “loquebuscas” es el patrón en específico que quieres encontrar, no sé, un ejemplo práctico es buscar una línea de texto que esta dentro de un documento que no recuerdas cual es y “tipodearchivo” es para filtrar, le estas diciendo a grep que solo busque la cadena de texto que le estas indicando en solo un tipo de archivo y no lo haga en todos los existentes.
Ahora podemos aplicar una serie de parámetros al comando para mejorar nuestra búsqueda, por ejemplo, para buscar más de un patrón, simplemente vamos a crear un archivo de texto que contenga una lista de patrones, uno en cada línea, para buscar en un archivo o directorio y añadiremos el parámetro -f para cargar el archivo que contiene los patrones.
grep -f ~ / archivoconpatrones.txt /
En este caso buscara todos los patrones descritos en el archivo y los buscara en todo el sistema y al final nos mostrara los resultados.
Es importante recuerda que el uso de grep en un archivo grande, o incluso en varios archivos puede producir muchos resultados.
Otro ejemplo de uso es si estamos buscando por tipo de archivo, esto suele suceder que no recordamos el nombre del archivo deseado, pero sabemos qué tipo de archivo es y en que rango d, para ello podemos ejecutar:
grep -l *.doc /carpeta/donde/lobuscas
Ahora si queremos buscar cierta palabra, pero queremos excluir aquellos resultados que contengan alguna otra:
grep palabrabuscada tipodearchivo | grep -v palabraexcluida
Ahora también puede estar la cadena de texto mezclado con mayúsculas y minúsculas, por lo que usando una expresión regular de grep no nos devolverá los resultados esperados, para ello debemos añadir un parámetro para que busque sin importar esto:
grep -i palabra /donde/buscarla
Y bueno aquí dejo algunos de los parámetros más utilizados en grep.
-c En lugar de imprimir las líneas que coinciden, muestra el número de líneas que coinciden.
-e PATRON nos permite especificar varios patrones de búsqueda o proteger aquellos patrones de búsqueda que comienzan con el signo -.
-r busca recursivamente dentro de todos los subdirectorios del directorio actual.
-v nos muestra las líneas que no coinciden con el patrón buscado.
-i ignora la distinción entre mayúsculas y minúsculas.
-n Numera las líneas en la salida.
-E nos permite usar expresiones regulares. Equivalente a usar egrep.
-o le indica a grep que nos muestre sólo la parte de la línea que coincide con el patrón.
-f ARCHIVO extrae los patrones del archivo que especifiquemos. Los patrones del archivo deben ir uno por línea.
-H nos imprime el nombre del archivo con cada coincidencia
Hay más funciones en grep de las que se tratan aquí, por lo que, si planea usar grep regularmente, tómese el tiempo para investigar qué puede hacer y cómo usarlo mejor.
El artículo Algunos comandos básicos de Grep aparece primero en Algunos comandos básicos de Grep.