El comando grep se utiliza para buscar texto. En este post veremos varios ejemplos de su funcionamiento.
La entrada de texto hacia el comando grep puede realizarse de varias formas.
1) Busca la cadena: "Texto" en el fichero: fichero.txt
grep "Texto" fichero.txt
2) Busca la cadena: "Texto" en los ficheros: fichero1.txt y fichero2.txt
grep "Texto" fichero1.txt fichero2.txt
3) Busca las cadenas: "Texto1" y "Texto2" en el fichero: fichero.txt
grep "Texto1 Texto2" fichero.txt
4) Visualiza el contenido de: fichero.txt y con una tubería se pasa la salida al comando grep que busca la cadena: "Texto":
cat fichero.txt | grep "Texto"
5) Se ejecuta cierto comando y con una tubería se pasa la salida al comando grep que busca la cadena: "Texto":
Comando | grep "Texto"
1) Muestra la versión de grep:
grep --version
2) Busca la cadena "Texto1" o "Texto2" en el interior del fichero sysadmit.txt
grep -E 'Texto1|Texto2' sysadmit.txt
3) Busca la cadena "Texto1" en el interior del fichero sysadmit.txt, pero muestra las lineas que no coinciden:
grep -v "Texto1" sysadmit.txt
4) Busca en el interior de los ficheros acabados con .sh,.pl,.txt la cadena "Texto" en el directorio /usr/local/SYSADMIT
Con -R: Se indica que buscará también en subdirectorios.
Con -i: Se indica que se ignorarán mayúsculas y minúsculas.
grep -R -i --include=\*.{sh,pl,txt} "Texto" /usr/local/SYSADMIT
5) Muestra las lineas que empiezan por: Texto1 en el interior del fichero sysadmit.txt
grep "^Texto1" sysadmit.txt
6) Cuenta las veces que aparece la cadena: "Texto" en el fichero: /usr/local/SYSADMIT/sysadmit.txt
grep -c "Texto" /usr/local/SYSADMIT/sysadmit.txt
7) En el resultado de la búsqueda, muestra solo la cadena "Texto" en vez de toda la linea en el fichero sysadmit.txt
Con -o: Muestra solo la parte que coincide
grep -o "Texto" sysadmit.txt
8) Muestra solo los nombres de fichero que en su interior contengan la cadena: "Texto1" a partir de la ruta: /usr/local/SYSADMIT
grep -rl "Texto1" /usr/local/SYSADMIT
egrep: Equivalente a grep -E: Busquedas indicando un patrón.
rgrep: Equivalente a grep -r: Busqueda recursiva.
* Ejemplo1: Mostrar código de error
grep -q "Texto1" sysadmit.txt
echo $?
Busca la palabra "Texto1" en el interior del fichero sysadmit.txt
Con el parámetro -q (modo silencioso), no muestra la salida del comando.
Con echo $?, muestra el código de error
Los códigos de error posibles, son:
0 = Encuentra coincidencia.
1 = No encuentra coincidencia.
2 = Error.
* Ejemplo2: grep dentro de un if, else
Busca la cadena "Texto" en el interior del fichero: sysadmit.txt
Si la cadena coincide, aparece: Encontrado, si no, aparece: No encontrado
Con el parámetro -q (modo silencioso), no muestra la salida del comando.
if grep -q "Texto" sysadmit.txt; then
echo Encontrado
else
echo No encontrado
fi
La entrada de texto hacia el comando grep puede realizarse de varias formas.
Linux: grep ejemplos: Uso simple:
1) Busca la cadena: "Texto" en el fichero: fichero.txt
grep "Texto" fichero.txt
2) Busca la cadena: "Texto" en los ficheros: fichero1.txt y fichero2.txt
grep "Texto" fichero1.txt fichero2.txt
3) Busca las cadenas: "Texto1" y "Texto2" en el fichero: fichero.txt
grep "Texto1 Texto2" fichero.txt
4) Visualiza el contenido de: fichero.txt y con una tubería se pasa la salida al comando grep que busca la cadena: "Texto":
cat fichero.txt | grep "Texto"
5) Se ejecuta cierto comando y con una tubería se pasa la salida al comando grep que busca la cadena: "Texto":
Comando | grep "Texto"
Linux: grep ejemplos: Uso avanzado:
1) Muestra la versión de grep:
grep --version
2) Busca la cadena "Texto1" o "Texto2" en el interior del fichero sysadmit.txt
grep -E 'Texto1|Texto2' sysadmit.txt
3) Busca la cadena "Texto1" en el interior del fichero sysadmit.txt, pero muestra las lineas que no coinciden:
grep -v "Texto1" sysadmit.txt
4) Busca en el interior de los ficheros acabados con .sh,.pl,.txt la cadena "Texto" en el directorio /usr/local/SYSADMIT
Con -R: Se indica que buscará también en subdirectorios.
Con -i: Se indica que se ignorarán mayúsculas y minúsculas.
grep -R -i --include=\*.{sh,pl,txt} "Texto" /usr/local/SYSADMIT
5) Muestra las lineas que empiezan por: Texto1 en el interior del fichero sysadmit.txt
grep "^Texto1" sysadmit.txt
6) Cuenta las veces que aparece la cadena: "Texto" en el fichero: /usr/local/SYSADMIT/sysadmit.txt
grep -c "Texto" /usr/local/SYSADMIT/sysadmit.txt
7) En el resultado de la búsqueda, muestra solo la cadena "Texto" en vez de toda la linea en el fichero sysadmit.txt
Con -o: Muestra solo la parte que coincide
grep -o "Texto" sysadmit.txt
8) Muestra solo los nombres de fichero que en su interior contengan la cadena: "Texto1" a partir de la ruta: /usr/local/SYSADMIT
grep -rl "Texto1" /usr/local/SYSADMIT
Linux: grep ejemplos: Otros comandos relacionados con grep:
egrep: Equivalente a grep -E: Busquedas indicando un patrón.
rgrep: Equivalente a grep -r: Busqueda recursiva.
Linux: grep ejemplos: Códigos de error
* Ejemplo1: Mostrar código de error
grep -q "Texto1" sysadmit.txt
echo $?
Busca la palabra "Texto1" en el interior del fichero sysadmit.txt
Con el parámetro -q (modo silencioso), no muestra la salida del comando.
Con echo $?, muestra el código de error
Los códigos de error posibles, son:
0 = Encuentra coincidencia.
1 = No encuentra coincidencia.
2 = Error.
* Ejemplo2: grep dentro de un if, else
Busca la cadena "Texto" en el interior del fichero: sysadmit.txt
Si la cadena coincide, aparece: Encontrado, si no, aparece: No encontrado
Con el parámetro -q (modo silencioso), no muestra la salida del comando.
if grep -q "Texto" sysadmit.txt; then
echo Encontrado
else
echo No encontrado
fi
Cómo buscar en archivos comprimidos con gzip:
ResponderEliminarzgrep "texto" archivo.gz
Muchas gracias por tu aporte y por participar en el blog.
EliminarUn saludo,
Xavi.