Expresiones regulares y grep

Anuncio
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).
Descargar