Filtrado básico con grep

Uno de los comandos que más uso en la terminal es grep, inclusive más que cd o ls.

grep tiene muchas opciones y brinda disimiles posibilidades, no obstante yo uso la forma más convencional posible, pero empecemos explicando ¿qué es grep?

grep simplemente es un filtro, es un comando que muestra líneas que concuerden con el filtro que hayamos declarado.

Por ejemplo, en nuestro sistema tenemos el archivo /usr/share/doc/bash/FAQ y el contenido de este archivo es:

Ver contenido del archivo

Si quieren listar en la terminal el contenido con el comando cat (sí cat, como gato jeje) lo pueden hacer:

cat /usr/share/doc/bash/FAQ

Ahora, supongamos que solo deseamos listar la línea de ese archivo que habla de la versión, para ello usamos grep :

cat /usr/share/doc/bash/FAQ | grep version

Poniendo eso en la terminal solo les mostrará la línea que contenga “version” en ese archivo, no mostrará más ninguna línea que no contenga esa palabra.

¿Qué pasaría si quiero mostrar todo excepto la línea de la versión?

O sea, de la forma que les expliqué se mostraría todo lo que coincida con el filtro, ahora les mostraré cómo hacer para que se muestre todo excepto lo que coincida con el filtro:

cat /usr/share/doc/bash/FAQ | grep -v version

¿notan la diferencia? … simplemente agregando -v ya hace la diferencia 😀

O sea si ponen grep solamente solo les mostrará lo que coincida con el filtro, pero si ponen grep -v les mostrará todo excepto lo del filtro.

Bueno acá termina el post, simplemente otro tip que ahora tal vez lo puedan menospreciar pero… no tienen ni idea de útil que puede resultar grep, es en serio un salva vidas 😀

Saludos


11 comentarios

  1.   Scalibur dijo

    Buenas!.. ..realmente un comando de gran utilidad..en mi caso lo utilizo bastante..

    Un ejemplo simple sería, por ejemplo, dpkg -l | grep ‘paquete’ (en caso de distros basadas en debian), sirve para saber si tenemos ese paquete instalado.

    Buenísimo darles estas herramientas a toda nuestra comunidad 😉

    1.    KZKG^Gaara dijo

      Muchas gracias 😀
      En efecto, grep es tan poderoso como nuestra imaginación jajajaja, él unido a awk (y cut) logran de veras maravillas *-*

      Pondré par de tips más para trabajo en terminal en breve 😉
      Saludos y gracias por tu comentario.

      PD: Interesante tu email LOL!!

  2.   DMoZ dijo

    Sin duda un comando muy versátil, una vez que aprendes a manejarlo te facilita la vida =) …

  3.   hexborg dijo

    ¡Muy bueno!! Sí. Ciertamente grep es uno de los programas salvavidas para cualquiera al que le guste usar la terminal. Sólo un par de puntualizaciones: En realidad no necesitas para nada usar el comando cat. Se puede poner el nombre del fichero como parámetro de grep así:

    grep version /usr/share/doc/bash/FAQ

    Además, aunque no se pudiera, siempre quedaría la opción de redirigir la entrada del comando haciendo algo como esto:

    grep version < /usr/share/doc/bash/FAQ

    Esto último se puede hacer con cualquier comando, así que nunca es necesario usar cat para enviar un fichero a la entrada de un comando.

    Usar una redirección en vez de cat hace que el shell lance un proceso menos, con lo que consume menos recursos. No es una diferencia apreciable, pero se considera buena práctica.

    Por otro lado, grep se vuelve realmente útil cuando se usan expresiones regulares… Si quisiera colaborar haciendo un post sobre expresiones regulares, ¿que tendría que hacer? ¿Basta con añadir una nueva entrada desde el escritorio de wordpress?

    1.    KZKG^Gaara dijo

      Oh interesante, siempre me acostumbré a usarlo con cat JAJAJAJA, gracias por el tip 😀

      1.    Hugo dijo

        Con grep también se pueden hacer filtrados un poco menos básicos, por ejemplo:

        grep -B3 -A3 -E -i --color=auto -n "(desde|hacia)?linux(\.)?$" ~/miarchivo.txt

        Esto básicamente muestra las líneas que contienen el término que buscamos (que puede estar en cualquier combinación de mayúsculas y minúsculas), mas las tres líneas anteriores y las tres posteriores, resalta los resultados en un color diferente, pone números de línea a los resultados y permite la habilitación de expresiones regulares extendidas que en este caso permiten buscar en “miarchivo.txt” todas las líneas que terminen con desdelinux, hacialinux o linux a secas (con o sin punto final).

        Por cierto, las expresiones regulares ofrecen mucha flexibilidad y todo buen “friki” apasionado por el software libre debería aprender a usarlas, jeje.

  4.   Dragnell dijo

    También es posible utilizar zgrep para comprimidos en .ta.gz resulta muy útil cuando queremos revisar logs antiguos. Saludos

  5.   jhon dijo

    hola. gracias por el post. me pasa que usando el grep, no se pone de color la palabra que escribo en las lineas que me aparecen. (generalmente es así) [ejemplo: grep gato archivo.txt]
    aparecen las lineas y el gato, pero el gato no se pone de algun color para distinguirlo
    (en las ccompus de mi uni si que se ve)
    sabes como podría activar esta opcion?
    porfa si puedes responderme. mi email es sps-003@hotmail.com

    1.    fdy nb dijo

      amigo tiene que escribir gato entre comillas ‘gato’ o también “gato” seguido del nombre del archivo donde lo quiere buscar

  6.   enrique dijo

    Hola amigo, llevas toda la razon, tienes un gran sentido de la utilidad. En adelante, grep lo pongo el primero en mi lista de comandos favoritos.
    saludos

  7.   scanjura dijo

    Y como seria para mostrar empleados filtrados por salario?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *