domingo, 31 de agosto de 2014

grep: buscando cadenas de caracteres en ficheros

Si trabajas mucho con consola, hay determinadas herramientas imprescindibles, y una de ellas es grep.
Imagina que tienes un fichero de texto (de configuración de algún programa, por ejemplo) y que este fichero tiene un tamaño bastante respetable. Imagina que necesitas encontrar el lugar exacto de ese fichero donde se encuentra un texto concreto. Si no conoces grep, tendrás que revisar todo el contenido buscando la cadena dichosa, y seguramente la pases por alto, teniendo que comenzar de nuevo.

Pues bien, si utilizas grep (viene por defecto en casi todos los sistemas, en caso contrario, instálalo con apt-get), resolverás el problema en 5 segundos.



Antes de empezar, un par de puntualizaciones:

- Si la cadena a buscar está formada por mas de una palabra, deberemos entrecomillarlas.

- El texto a buscar es sensible a mayúsculas/minúsculas. Si no sabemos como está escrita la palabra en el documento, usaremos el parámetro -i


Ejemplos de usos:

grep cadena fichero Esta orden mostrará las líneas del fichero en las cuales exista la cadena que le pasamos como parámetro

grep "cadena de texto" fichero  Buscamos mas de una palabra

grep -i cadena fichero No se tendrá en cuenta ni mayúculas ni minúsculas

grep cadena fichero1 fichero2 fichero3 Si la búsqueda la queremos hacer en varios ficheros

grep -r cadena carpeta/ La búsqueda se realizará de forma recursiva en el directorio especificado

grep -v cadena fichero Justamente al revés que grep cadena fichero, es decir, nos devolverá todas las líneas QUE NO COINCIDAN

grep -n cadena fichero Además de la línea, devolverá el número de línea en que se encuentra la cadena

También podemos usar grep para filtrar datos de salida de otras aplicaciones, por ejemplo:
ps ax | grep firefox Solo nos presentará las líneas que contengan firefox al ejecutar el comando ps ax

dpkg -l | grep paquete En este caso, grep filtrará las coincidencias de la cadena con los paquetes instalados

Como siempre digo al final de los artículos, hay muchas mas opciones, y para eso está la documentación oficial:



grep -lir "cadena a buscar" "/media/win/cosas"
- El parámetro -l le indica que imprima los nombres de archivos en los que se encuentre el texto solicitado.
- El parámetro -i, que ignore las mayúsculas y minúsculas.
- El parámetro -r, que busque en forma recursiva dentro de la ruta indicada.



============================================


 En modo gráfico podemos hacerlo con el programa:

KFileReplace




































No hay comentarios: