====== Ejemplos del uso de grep para recorrer archivos ======
A continuación veremos varios ejemplos del uso del comando grep para recorrer archivos.((Recorrer: en inglés //"parse"//.))
En GNU/Linux, usamos ''grep'' para buscar una palabra dentro de un archivo, lo cual se utiliza principalmente en ''bash'' pero... ¿hasta dónde podemos llegar con su uso?
A continuación, en cada ejemplo, intentaremos trabajar con dos archivos de demostración como el siguiente:
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
Esta Es La Primera Línea Con El Primer Carácter De Cada Palabra En Mayúscula.
Hay dos líneas vacías sobre esta.
Y esta es la última línea.
cp archivo_demo1 archivo_demo2
===== Uso básico =====
**Buscar una cadena en un archivo**
grep "esta" archivo_demo1
esta es la primera línea en minúsculas de este archivo.
Hay dos líneas vacías sobre esta.
Y esta es la última línea.
**Buscar una cadena en varios archivos**
grep "esta" archivo_demo*
archivo_demo1:esta es la primera línea en minúsculas de este archivo.
archivo_demo1:Hay dos líneas vacías sobre esta.
archivo_demo1:Y esta es la última línea.
archivo_demo2:esta es la primera línea en minúsculas de este archivo
archivo_demo2:Hay dos líneas vacías sobre esta
archivo_demo2:Y esta es la última línea.
**Buscar sin coincidencia entre mayúsculas y minúsculas (uso del argumento -i)**
grep -i "esta" archivo_demo1
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
Esta Es La Primera Línea Con El Primer Carácter De Cada Palabra En Mayúscula.
Hay dos líneas vacías sobre esta.
Y esta es la última línea.
**Buscar expresiones regulares**
grep "esta.*línea" archivo_demo1
esta es la primera línea en minúsculas de este archivo.
Y esta es la última línea.
//En este ejemplo buscamos aquellas líneas que contienen la palabra "esta" y luego de cualquier texto (*) continúan con "línea". Para más operadores de expresiones regulares se recomienda leer la documentación del grep.//
**Buscar palabras completas (excluir subcadenas) (uso del argumento -w)**
grep -iw "de" archivo_demo1
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
Esta Es La Primera Línea Con El Primer Carácter De Cada Palabra En Mayúscula.
**Buscar N líneas luego de la coincidencia**
grep -A2 "ESTA" archivo_demo1
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
Esta Es La Primera Línea Con El Primer Carácter De Cada Palabra En Mayúscula.
grep -A1 "ESTA" archivo_demo1
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
**Buscar N líneas antes de la coincidencia**
grep -B1 "última" archivo_demo1
Hay dos líneas vacías sobre esta.
Y esta es la última línea.
**Buscar N líneas alrededor de la coincidencia**
grep -C1 "minúsculas" archivo_demo1
ESTA ES LA PRIMERA LÍNEA EN MAYÚSCULAS DE ESTE ARCHIVO.
esta es la primera línea en minúsculas de este archivo.
Esta Es La Primera Línea Con El Primer Carácter De Cada Palabra En Mayúscula.
===== Resaltar los resultados =====
Es necesario establecer las variables de entorno ''GREP_OPTIONS'' y ''GREP_COLOR''.
export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'
**Buscar en archivos recursivamente (uso del argumento -r)**
//Cuando necesitas buscar una cadena en los archivos del directorio actual y sus subdirectorios. El siguiente ejemplo buscaría la palabra "auto" en todos los archivos del directorio actual y sus subdirectorios.//
grep -r "auto" *
**Buscar las no coincidencias (uso del argumento -v)**
grep -iv "primera" archivo_demo1
Hay dos líneas vacías sobre esta.
Y esta es la última línea.
**Mostrar las líneas de varias no coincidencias (uso del argumento -v y los argumentos -e)**
a
b
c
d
grep -v -e "a" -e "b" -e "c" archivo_demo3
d
**Contar el número de ocurrencias (uso del argumento -c)**
grep -c "esta" archivo_demo1
3
grep -ic "esta" archivo_demo1
5
**Mostrar solo los nombres de los archivos los cuales contienen coincidencias (uso del argumento -l)**
grep -l "esta" archivo_demo*
archivo_demo1
archivo_demo2
**Mostrar solo la cadena buscada (uso del argumento -o)**
//Por defecto el comando grep muestra la línea completa de la cadena o patrón dado, pero si solo quieres mostrar dicha cadena o patrón puedes utilizar el argumento -o.//
Notar la diferencia en el ejemplo:
grep "es.*línea" archivo_demo1
esta es la primera línea en minúsculas de este archivo.
Y esta es la última línea.
grep -o "es.*línea" archivo_demo1
esta es la primera línea
esta es la última línea
**Mostrar la posición en el archivo de la conicidencia (uso de argumento -b)**
grep -bo "es.*línea" archivo_demo1
58:esta es la primera línea
237:esta es la última línea
grep -bo "es.*línea" archivo_demo*
archivo_demo1:58:esta es la primera línea
archivo_demo1:237:esta es la última línea
archivo_demo2:58:esta es la primera línea
archivo_demo2:236:esta es la última línea
**Mostrar la fila en el archivo de la conicidencia (uso de argumento -n)**
grep -no "es.*línea" archivo_demo*
archivo_demo1:2:esta es la primera línea
archivo_demo1:7:esta es la última línea
archivo_demo2:3:esta es la primera línea
archivo_demo2:10:esta es la última línea