Logo

viernes, 25 de febrero de 2011

GREP para buscar texto dentro de archivos

Grep es uno de los camandos mas utiles. Una vez conoces la linea de comando hay algunos que no los puedes dejar. La aplicación que aca coloco es buscar una cadena de caracters dentro de todos los archivos de un directorio. Al menos a mi como programador me sirve mucho a la hora de buscar una palabra en todo un proyecto.
Ej: buscar la palabra “nombre” dentro de todos los archivos .php que tengo en un directorio. Haria algo asi:

    grep “nombre” /home/miusuario/documentos/*.php

Si quiero buscar en los subditectorios:
    grep -r “nombre” /home/miusuario/documentos/*.php
   
Y si me interesa la busqueda en todo tipo de archivos. Entonces haria algo asi:
    grep -r “nombre” /home/miusuario/documentos

Otra opcion es buscar varias cadenas. Ej: quiero saber en donde estan las lineas que dicen “perro” y “gato”, seria asi:
    grep -r -e “perro” -e “gato” /home/miusuario/documentos/

Algunas formas diferentes de hacer estas mismas operaciones en combinación con otros comandos:
  • find / -name “*.py” -exec grep -il CADENA {} \;
  • find / -type f -exec grep -il CADENA {} \;
  • find . -newer ARCHIVO.txt -exec grep -il CADENA {} \;
  • find directorio -exec grep -Hn cadena {} \;


Otras opciones interesantes son:
  • -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.
  • -w fuerza la busqueda a coincidir con la palabra exacta.

2 comentarios:

  1. Para el Win no hay algo así nativo que yo sepa, esta es una herramienta para los sistemas UX (BSD, Ulix, Linux, HP-UX, Solaris). Se puede instalar el www.cygwin.com que permite tener abrir una ventana con ambiente Linux.
    Otra opción es buscar en sourceforge el Grep para Windows http://gnuwin32.sourceforge.net/packages/grep.htm

    ResponderEliminar