martes, 29 de noviembre de 2011

Comando grep

Grep
El procesador de expresión regular generalizada es una herramienta que permite que las expresiones regulares se usen para buscar archivos o datos de salida de un comando.

Algunas de las opciones más utilizadas son:
grep -A n Despliega 'n' cantidad de lineas posteriores a la coincidencia indicada.
grep -v  Busqueda invertida de coincidencias.
grep -i   Realiza una búsqueda que no distinge entre mayúsculas y minúsculas
grep -c  Devuelve el conteo de ocurrencias localizadas de los caracteres buscados
grep -r  Busca recursivamente dentro de todos los subdirectorios del directorio actual.
grep -n  Numera las líneas en la salida.
grep -E  Permite usar expresiones regulares. Equivalente a usar egrep.
grep -o  Le indica a grep que nos muestre sólo la parte de la línea que coincide con el patrón.
grep -f  ARCHIVO extrae los patrones del archivo que especifiquemos.
grep -H Imprime el nombre del archivo con cada coincidencia.

Ejemplos:
[user@host]$ grep pluma *
text2:9 pluma
text6:9 pluma
text6:9 pluma
Busca la palabra pluma en todos los archivos del directorio actual (*).

[user@host]$ grep -c pluma Fichero.txt
text1:1
text2:1
text3:0
text4:0
Devuelve el conteo de ocurrencias localizadas de la palabra pluma en el archivo Fichero.txt, equivalente a usar:
[user@host]$ grep pluma Fichero.txt | wc -l

Mostrar el contenido de un script sin sus comentarios:
[user@host]$ grep -v "#" Reporte.sh

Mostrar las línesa de un fichero que contienen caracter1 y caracter2:
[user@host]$ grep -e "caracter1" -e "caracter2" archivo

Mostrar los ficheros que contienen el caracter1 en el directorio actual y todos sus subdirectorios:
$ grep -r "caracter1" *

También es común el uso de expresiones de rango, las cuales se indican con dos caracteres separados por un guión, como: 0-9 en el caso de dígitos, o 0-9a-fA-F, en el caso de dígitos hexadecimales.

Expresiones regulares extendidas
La sintaxis de las expresiones regulares extendidas elimina la necesidad de escapar varios caracteres cuando se les usa como en la sintaxis básica (incluyendo los paréntesis, "?", "+", "|" y "{"). Esto significa que se debe escapar sólo si se desea que se interpreten como caracteres. Se puede usar la opción-E(o--extended-regexp) de grep para indicar que se está usando sintaxis de expresiones regulares. De manera alternativa, el comando egrep también cumple la misma función.

Ejemplo:
cat Base.txt | awk '{print $2, 3}' | grep -E '5.0|9.8' | grep -Ev '528|529|530' | wc -l

No hay comentarios:

Publicar un comentario