Extraer sólo los patrones con grep

Por defecto, grep devuelve las líneas que contienen un determinado patrón, pero con el operador -o podemos extraer únicamente el patrón buscado, por lo que si necesitamos sólo ese dato concreto nos va a ayudar mucho, ya que no vamos a tener que limpiar la línea con tuberías y otros comandos.

Si buscamos la palabra Violante en Un soneto me manda hacer Violante y no le indicamos ningún modificador a grep, nos devolverá la línea completa:

$ grep Violante violante.txt 
Un soneto me manda hacer Violante

Si buscamos una palabra concreta, no tiene mucho sentido que nos devuelva esa palabra. Pero con grep también podemos buscar un patrón, por ejemplo, que busque los conjuntos de caracteres que contengan «V», cualquier letra minúscula ([a-z]) y «e»:

$ grep "V[a-z]*e" violante.txt 
Un soneto me manda hacer Violante

Y aquí sí que tiene más sentido que nos devuelva sólo las coincidencias de ese patrón. Este ejemplo que estoy utilizando es muy sencillo y sólo es útil a modo didáctico, pero los patrones que podemos buscar son infinitos: fechas, correos electrónicos, nombres propios…

Veamos cómo extraer sólo las coincidencias con el patrón:

$ grep -o "V[a-z]*e" violante.txt 
Violante

Con el modificador -o hemos conseguido que, en lugar de devolvernos la línea completa, nos devuelva sólo el patrón, por lo que vemos que en este poema sólo hay una coincidencia de «V[a-z]*e».

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.