Expresiones regulares y grep El comando grep es capaz de realizar búsquedas más avanzadas cuando se utilizan expresiones regulares. Las expresiones regulares cumplen una función parecida a los comodines en el shell, o sea, hacen substituciones de caracteres o conjuntos de caracteres. Expansión de archivos y metacaracteres Los metacaracteres (operadores) son: * Substituye a varios caracteres. ? Substituye a un carácter. . Substituye a un carácter (sólo funciona para el comando grep). [rango] Especifica varios caracteres o un rango de ellos. [^rango] Especifica todos los caracteres menos los del rango especificado. Ejemplo: $ cat [abc].txt Es equivalente a escribir: $ cat a.txt b.txt c.txt En la expansión se utilizan frecuentemente las llaves { }. La sintaxis correcta es escribir la lista de caracteres entre llaves y separados por comas sin espacios. Ejemplo: $ echo {tres,cuatro,5}coches Dará como resultado: trescoches cuatrocoches 5coches Ejemplos utilizando grep con expresiones regulares y metacaracteres 1. Buscar todas las líneas que contengan una cadena que empiece con una c, que luego tenga cualquier letra y que termine con una n, dentro del archivo archivo. $ grep c.n archivo 2. Buscar las ocurrencias Bel y cel en archivo. $ grep [Bc]el archivo 3. Buscar las líneas que contengan mata, nata, oata y pata en archivo. $ grep [m­p]ata archivo 4. Buscar las líneas en archivo que contengan una cadena terminada en ata y que no contengan como primera letra m, n, o y p. $ grep [^m­o]ata archivo 5. Mostrar como resultado las líneas que comiencen con Martín Guzmán en el archivo nombres. Importante: Dado que la cadena “Martín Guzmán” no está entre corchetes (“[” y “]”), el símbolo “^” no indica una negación de conjunto (o de rango), como en el ejemplo anterior, sino que indica que la cadena “Martín Guzmán” debe aparecer, exclusivamente, al comienzo de la línea que la contiene. $ grep "^Martín Guzmán" nombres 6. Encontrar las líneas terminadas con la palabra durmiendo, contenidas en el archivo libro. El carácter “$” indica que la cadena buscada debe aparecer, exclusivamente, al final de la línea que la contiene. $ grep "durmiendo$" libro 7. Buscar en el archivo libro aquellas líneas que sean exactamente la cadena entre comillas. $ grep "^México gana veinte premios Nobel en el año 2014$" libro Si buscamos alguna cadena que contenga caracteres comodín, apóstrofes, comillas, caracteres de redirección o barras del tipo “\”; se deberá anteponer un carácter de barra invertida “\” para indicar que buscamos dicho carácter en sí, y que no estamos utilizándolo como comodín; o bien, que iniciamos una cadena de varias palabras. Ejemplo: $ grep \*\"\'\?\< libro Aquí grep buscará exactamente la cadena: *"'?<, dentro del archivo libro. Para eliminar el significado de substitución de caracteres como el “.” (carácter punto), hay que anteponer obligatoriamente “\”. Ejemplo: $ grep "E\.\ T\." Buscará la secuencia E. T. (incluyendo el carácter de espacio en blanco intermedio).