Aprendiendo a usar grep con ejemplos

En este ejemplo tenemos dos ficheros, en uno tenemos una lista de usuarios, en el segundo tenemos otra lista de usuarios donde existen algunas coincidencias entre ambos. El objetivo es crear un fichero nuevo donde existan solamente las coincidencias del fichero 1 en el fichero 2.

El formato del fichero1 es:

lilibet
liliana

El formato del fichero2 es:

brians:Z3wW4ZPHNTNV2
alain:Hc9QJlKxDXyO.
lilibet:uUIoYbAUJ6Ecc
maria:zNge5unPZrnzI
liliana:o0EbbZXD4gC8M

Nuestro objetivo es recuperar las líneas del fichero2 que coinciden con el fichero1.

Muchas podrían ser las posibilidades de lograr nuestro objetivo, pero voy a utilizar el comando grep para practicar su uso.

Vamos paso a paso.

si ejecutamos

grep lilibet fichero2 > fichero3

tenemos el resultado en fichero3

lilibet:uUIoYbAUJ6Ecc

o sea que recuperamos el dato para el usuario lilibet.

Para el caso de un solo usuario, con el comando anterior podríamos resolver, pero que tal si los ficheros tienen miles de usuarios por línea ?

Si con el comando grep podemos recuperar la línea correspondiente a un parametro previamente asignado, si repetimos este comando para cada uno de las líneas del fichero1 de forma automática y luego para cada salida adicionamos el resultado en un fichero3 podríamos recuperar la información que necesitamos.

Básicamente lo que haremos será recorrer el fichero1 de arriba hacia abajo, almacenar cada línea en una variable y luego pasar esta variable como patrón del comando grep al fichero2. Al final de la línea del comando redireccionamos el resultado a un fichero3.

Para esto crearemos un fichero limpia.sh que tendrá permisos 750.

limpia.sh:

#!/bin/bash
for i in `cat fichero1`
do
    grep "${i}:" fichero2 >> fichero3
done

donde:

"${i}:"

Es el patrón de búsquda. ${i} es la variable que irá cambiando de valor según las líneas del fichero1, los : forman parte del patrón y ayudan a la hora de hacer la búsqueda. Las comillas dobles enmarcan el patrón de búsqueda y hacen que la variable sea válida dentro del patrón.

>>

Permite adicionar al final de línea el resultado de cada una de las coincidencias encontradas al fichero3.

De esta forma, al ejecutar el script, el valor del fichero3 debe ser:

lilibet:uUIoYbAUJ6Ecc
liliana:o0EbbZXD4gC8M

3 comentarios para “Aprendiendo a usar grep con ejemplos”

  1. TeX [ Stefany Ponce ] × Dice:

    soy una estudiante de ing informatica y quiero saber algo mas sobre el comando grep si saben algo de el escribanme a mi email teffixitas_9@hotmail.com
    xao!

    TeffixitaZ ♥

  2. ramon vergara Dice:

    Muchas gracias por la ayuda, me sirvio mucho

  3. ramon vergara Dice:

    Me di cuenta que tu script solo sirve para buscar strings que no incluyan puntos:

    lilibet
    liliana

    Pero si existe un punto en alguna de esas cadenas de caracteres solo busca el ultimo string, es decir

    1.2.3.4
    2.3.4.5
    3.4.5.6

    Solo busca 3.4.5.6 ???

    Porqe sucede eso???

    como lo puedo solucionar, pues necesito sacar informacion de ips en un archivo txt.

Escribe un comentario