«Todo en Linux es un archivo.«Esta es la razón por la que la mayoría de los usuarios de Linux dedican mucho tiempo a modificar el contenido de los archivos.
Aquí es donde la importancia del comando grep juega un papel clave, le permite Buscar y combinar patrones en archivos de texto u obtener el resultado.
Entonces, en este tutorial, lo guiaré a través de todos los puntos esenciales necesarios para aprender el comando grep:
- Sintaxis básica y opciones populares para comandos
- Ejemplos prácticos de comandos.
- ejercicios de comando grep
Tabla de Contenidos
A continuación se explica cómo utilizar el comando grep
Para utilizar el comando grep, es importante comprender la sintaxis.
Esta es la sintaxis básica del comando grep:
grep [OPTIONS] PATTERN
aquí,
[OPTIONS]
: Con un conjunto determinado de opciones, puede cambiar el comportamiento preestablecido del comando grep, por ejemplo, usando-i
Habilite búsquedas que no distingan entre mayúsculas y minúsculas.PATTERN
: Aquí puede especificar el texto a buscar en un archivo o salida de comando. También puede ser una expresión regular para patrones más complejos.
: Aquí usted especifica el archivo a buscar, si no especifica ningún archivo, buscará desde la entrada estándar.
Ahora, veamos algunas opciones comunes del comando grep:
Opciones | describir |
---|---|
-i |
Ignore mayúsculas y minúsculas al realizar la búsqueda. |
-v |
Imprime líneas que no coinciden con el patrón. |
-n |
Muestra el número de línea de cada línea coincidente. |
-w |
Coincide únicamente con palabras completas, no con partes de palabras. |
-c |
Cuenta el número de filas coincidentes, no imprime las filas. |
-r |
Buscar directorios de forma recursiva. |
-A n |
Imprima n líneas después de cada línea coincidente. |
-B n |
Imprima n líneas antes de cada línea coincidente. |
-C n |
Imprima n líneas antes y después de cada línea coincidente. |
-f Filename |
Lea los patrones de búsqueda del archivo, uno por línea. |
-o |
Imprime sólo la parte coincidente de la fila. |
Quizás se pregunte: ¿qué sucede cuando usa el comando grep sin ninguna opción? Bueno, simplemente imprime las líneas que contienen el patrón.
Por ejemplo, aquí quiero buscar error
Palabras clave en el archivo error.log
y sin otras opciones, me da este resultado:
¿Lo viste? Resalta el patrón encontrado e imprime las líneas que contienen el patrón.
Para que este tutorial sea fácil de seguir, usaré una herramienta llamada error.log
Estos incluyen las siguientes líneas:
This is a log file with various messages.
An error occurred at 10:00 AM.
The system encountered an unexpected issue.
Everything is working normally now.
Another error message at 11:30 AM.
Warning: Please check disk usage.
Log closed at 12:00 PM
Ejemplo práctico del comando grep
En esta sección, presentaré varios ejemplos del comando grep para que pueda comprender mejor cómo usarlo.
1. Búsqueda que no distingue entre mayúsculas y minúsculas
El modo de comando grep distingue entre mayúsculas y minúsculas de forma predeterminada y, en la mayoría de los casos, funciona bien, pero es posible que desee desactivar la distinción entre mayúsculas y minúsculas.
Para esto puedes usar -i
El logotipo se muestra a continuación:
grep -i PATTERN Filename
Para demostrar esto usaré ERROR
Como patrón de búsqueda, muestra patrones coincidentes independientemente del caso:
grep -i ERROR error.log
2. Mostrar n
Une las líneas antes y después de la línea.
De forma predeterminada, el comando grep imprime solo líneas coincidentes, pero a veces es necesario el contexto de las líneas coincidentes. Entonces imprime las líneas antes y después de la línea coincidente.
Imprimir n
Haga coincidir la línea antes de la línea
Para imprimir n filas antes de hacer coincidir las filas, puede usar -B
Marque y especifique el número de filas a imprimir de la siguiente manera:
grep -B PATTERN Filename
Por ejemplo, aquí imprimo una línea antes de cada línea coincidente:
grep -B 1 error error.log
Imprimir n
La línea después de la línea coincidente.
Para imprimir n líneas después de la línea coincidente, puede usar -A
Marque y especifique el número de filas de la siguiente manera:
grep -A PATTERN Filename
Si quiero imprimir una línea después de la línea coincidente, usaría lo siguiente:
grep -A 1 error error.log
Imprimir n
Une las líneas antes y después de la línea.
Si desea imprimir las líneas antes y después, puede usar -C
Marque y especifique el número de filas a imprimir de la siguiente manera:
grep -C PATTERN Filename
Supongamos que quiero mostrar 1 línea antes de la línea del patrón coincidente y 1 línea después de la línea del patrón coincidente, entonces usaría lo siguiente:
grep -C 1 error error.log
3. Mostrar líneas que no coinciden con el patrón.
La mayoría de las veces, utilizará el comando grep para hacer coincidir patrones, pero también le permite invertir los resultados de la búsqueda.
En resumen, especificas un término de búsqueda e imprimirá las líneas que no coinciden con el patrón dado, para esto puedes usar -v
El logotipo se muestra a continuación:
grep -v PATTERN Filename
Por ejemplo, si quiero imprimir cada fila que no contiene error
términos, entonces usaría lo siguiente:
grep -v error error.log
4. Muestra el número de líneas coincidentes.
Para mostrar el número de filas coincidentes, todo lo que tienes que hacer es usar -n
El logotipo es como se muestra:
grep -n PATTERN Filename
5. Muestra el número total de resultados coincidentes.
Si desea saber el número de resultados coincidentes, puede utilizar -c
El logotipo es como se muestra:
grep -c PATTERN Filename
Por ejemplo, aquí quiero saber cuántas veces aparece esta palabra. error
mencionado en error.log
archivo, así que utilicé el siguiente comando:
grep -c error error.log
6. Busque patrones en varios documentos.
Si desea buscar un patrón en varios archivos, todo lo que tiene que hacer es agregar varios archivos para buscar de esta manera:
grep PATTERN File1 File2
Por ejemplo, aquí busqué error
Cadenas de dos archivos: error.log
y error.txt
Me da el siguiente resultado:
grep error error.log error.txt
7. Busque patrones de cada archivo en el directorio.
Si desea buscar un patrón específico de cada archivo presente en un directorio, puede usar el comando grep de forma recursiva, que buscará un patrón determinado de cada archivo presente en ese directorio específico.
Para habilitar la búsqueda recursiva, utilice -r
El logotipo es como se muestra:
grep -r PATTERN
Por ejemplo, aquí busqué error
Cadenas en el directorio actual:
grep -r error .
8. Busca la palabra exacta
De forma predeterminada, el comando grep imprimirá todos los patrones coincidentes, que no es lo que siempre desea. ¿Suena extraño? Por favor permítame explicarle.
Digamos que quieres buscar el término. Orange
Pero si un archivo en particular también contiene el término Oranges
Entonces la línea que contiene el término Oranges
También se mostrará como salida.
Para solucionar este problema puedes utilizar -w
opciones y especifique el modo:
grep -w PATTERN Filename
Por ejemplo, aquí voy a buscar la palabra. err
Entonces usaré -w
bandera, y también le muestra la diferencia en lo que sucede cuando no lo usa.
grep -w err error.log
cuando uso -w
Firmar para encontrar err
cadena, no devuelve ningún resultado porque no existe.
Pero en el segundo intento lo eliminé. -w
bandera, devolverá dos resultados de contenido de visualización, donde el patrón de cadena es parte de la otra cadena (no separada).
9. Utilice el modo de expresión regular para búsquedas avanzadas.
Si una búsqueda normal no hace justicia, entonces puedes usar el modo regex (secuencia de caracteres) para tener más control sobre tu búsqueda.puedes usarlo -e
Las banderas usan patrones de expresión regular, mientras que -E
Expresiones regulares que le permiten utilizar funciones extendidas:
grep -e/-E PATTERN Filename
Por ejemplo, aquí estoy usando una expresión regular extendida para encontrar dos vocales usadas juntas en un archivo:
grep -e '[aeiouAEIOU]{2}' error.log
Lectura recomendada📖
10. Utilice el operador OR para especificar múltiples patrones
Puede especificar varios patrones utilizando el operador O, lo cual resulta útil cuando desea buscar varios patrones de manera eficiente.
Para especificar varios patrones, utilice el operador O (|) de la siguiente manera:
grep 'PATTERN_1\|PATTERN_2' Filename
💡
Puede presionar Mayús + Barra invertida para obtener el operador O.
Digamos que deseo encontrar dos patrones: error
y Please
Entonces usaría lo siguiente:
grep 'error\|Please' error.log
Preguntas de práctica 📓
La práctica es la mejor manera de aprender, por eso comparto algunas preguntas de práctica para el comando grep.
puedes usarlo error.log
Los archivos que mencioné al principio de esta guía resuelven los siguientes problemas:
- descubrir
error
Una cadena para cada archivo presente en el directorio de trabajo. - Buscar filas que no contengan el término
success
. - Busca en un archivo líneas que contengan cualquiera de los siguientes
error
oissue
. - buscando términos
log
Desactivando las búsquedas que distinguen entre mayúsculas y minúsculas y redirigiendo la salida a un archivo. - ¿Cómo imprimir solo los 2 últimos resultados e ignorar todos los demás? (Consejo: utilice el comando tail)
Si encuentra alguna dificultad para resolver el problema anterior, contáctenos en los comentarios o publique su pregunta en nuestro foro social.
Puede descargar la hoja de referencia del comando grep para obtener más ejemplos e información:
¿Eres un usuario avanzado? prueba ripgrep
El comando ripgrep puede hacer todo lo que hace el comando grep, pero con algunas ventajas adicionales, como rendimiento y funcionalidad, incluida la capacidad de buscar dentro de archivos zip.
¿Suena genial? A continuación se explica cómo instalar y utilizar ripgrep en Linux:
Además, si eres nuevo en Linux, te recomiendo que leas también nuestro Tutorial de comandos para principiantes.
💬Comparte tu opinión sobre el comando, tu experiencia al usarlo y ¿qué prefieres en lugar de grep?