Jugando con Grep

5 comments
Buenas me dieron el trabajo de extraer de un file todos los correos electronicos que es necesario que se tenga el dia de ayer ni bien me desperte me recordé que tenia que hacerlo para hoy lo primero que se me vino usar grep :) pero hace tiempo que no hago uso del comando grep así que a leer se dijo,  y recordar.

La funcionalidad de grep es la de escribir en salida estándar aquellas líneas que concuerden con un patrón.

Su sintaxis es:

grep [opciones] PATRÓN [ARCHIVO...]
grep [opciones] [-e PATRÓN | -f ARCHIVO] [ARCHIVO...]

Bueno si tenemos este conocimiento de lo que hace grep y depende del patron que se manda Sus opciones más interesantes son:

-c: Modificar la salida normal del programa, en lugar de imprimir por salida estándar las líneas coincidentes, imprime la cantidad de líneas que coincidieron en cada archivo.

-e PATRÓN : Usar PATRÓN como el patrón de búsqueda, muy útil para proteger aquellos patrones de búsqueda que comienzan con el signo «-».

-f ARCHIVO :Obtenee los patrones del archivo ARCHIVO

-H : Imprimir el nombre del archivo con cada coincidencia.

-r: Buscar recursivamente dentro de todos los subdirectorios del directorio actual.

Ahora ya conociendo lo basico de grep que si mal no recuerdo es todo un monstruo para usarlo ;) me puse a jugar con las queridas expresiones regulares lo cual llegaria a ser enviando en el patrón famoso que no paramos de verlo, lo cual nos ayudaria bastante con ello y de este sacar en una salida  lo primero me resulto luego de unos 15 minutos de ir jugando con la expresión regular dio con su objetivo posterior de ello, necesito sacarlo en otro file asi que la solucion simple > file de salida.
Aqui esta como lo use

grep -Eio '[a-z0-9._-]+@[a-z0-9.-]+[a-z]{4,8}'

Es mas que seguro que tiene que ser mejorado pero me sirvio para salir del apuro, es una entrada rápida :) espero le sirva a mas de uno....

Mas sobre grep

5 comentarios

  1. Impresionante muy bueno eso,eso si que es usar la potencia de un comando,ademas con mucho rango de opcion en la expresion,¿se puede saber cuanto tardo y mas o menos el tamaño del fichero usado?

    ResponderEliminar
  2. Tardo 1 minutos aproximadamente, con el archivo de prueba que maneja de 1 gb, con el que debí de realizarlo lo cual no llega ni a 1 mb solo demoro segundos :)

    Saludos

    ResponderEliminar
  3. Se me olvidaba para extraer una salida directa que no sea en la terminal solo se agrega > file y listo tenemos la salida en texto plano

    ResponderEliminar
  4. El archivo del que debías extraer los correos, tenía otros '@' aparte de las direcciones de email's?

    ResponderEliminar
  5. Nopi era directo, ya que era un json.

    Saludos

    ResponderEliminar