Grep es un poderoso comando UNIX que le permite buscar dentro del contenido del archivo en una variedad de parámetros. Es especialmente útil cuando está solucionando problemas o depurando.
El comando grep tiene una gran cantidad de opciones y casos de uso. Probablemente nunca los necesite o los use todos. Sin embargo, terminará usando un puñado de comandos grep la mayor parte del tiempo.
Este artículo enumera los comandos grep más comunes con ejemplos rápidos. El Manual de Linux ya tiene un artículo detallado sobre grep, por lo que no profundizaré aquí. Solo mostraré las opciones comunes y su explicación aquí.
Es bueno si ya está familiarizado con el comando grep pero sigue olvidando qué opción hace qué.
Opción | Ejemplo de comando | Descripción |
yo | archivo de patrón grep -i | Búsqueda que no distingue entre mayúsculas y minúsculas |
A | grep -Un archivo de patrones | Mostrar n líneas después del partido |
B | grep -B n archivo de patrón | Mostrar n líneas antes del partido |
C | grep -C n archivo de patrón | Mostrar n líneas antes y después del partido |
v | archivo de patrón grep -v | Mostrar líneas que no coinciden |
c | archivo de patrón grep -c | Cuenta el número de líneas coincidentes |
l | grep -l archivo de patrón | Mostrar solo los nombres de los archivos |
w | grep -w archivo de patrón | Coincide con la palabra exacta |
e | grep -e archivo de expresión regular | Hacer coincidir el patrón de expresiones regulares |
a | grep -un archivo de patrones | Buscar en archivos binarios |
r | grep -r patrón directorio | Buscar recursivamente en el directorio |
He incluido una hoja de trucos en PDF que puede descargar, imprimir y tener en su escritorio.
Descargar la hoja de trucos de Grep
Ejemplos rápidos del comando Grep
Probablemente ya sepa que para buscar un texto o patrón en particular en un archivo, debe usar grep como este:
grep search_pattern filename
Veamos algunos casos de uso comunes del comando grep.
Búsqueda insensible a mayúsculas y minúsculas
De forma predeterminada, la búsqueda con grep distingue entre mayúsculas y minúsculas. Puede ignorar la coincidencia de mayúsculas y minúsculas con -i
opción:
grep -i search_pattern filename
De esta forma, grep devolverá líneas que coincidan tanto con Holmes
y holmes
.
Mostrar líneas antes y después de las líneas coincidentes
De forma predeterminada, solo ve las líneas coincidentes. Pero cuando está solucionando un problema, es útil ver un par de líneas antes y/o después de las líneas coincidentes.
Puedes usar el -A
para mostrar líneas después de las correspondientes. Recuerda, A es para Después.
El siguiente comando mostrará las líneas coincidentes junto con las 5 líneas posteriores a la coincidencia.
grep -A 5 search_pattern filename
Del mismo modo, puede utilizar -B
opción de mostrar líneas antes de las coincidentes. Recuerda, B es para Antes.
El siguiente comando mostrará 5 líneas antes de las correspondientes junto con la(s) línea(s) correspondiente(s).
grep -B 5 search_pattern filename
Mi favorita es la opción -C
porque muestra líneas que están antes y después de las correspondientes. Recuerde, C aquí significa Círculo.
El siguiente comando mostrará 5 líneas antes de la correspondiente, la línea correspondiente y 5 líneas después de la línea correspondiente.
grep -C 5 search_pattern filename
Mostrar las líneas que no coinciden
Puede usar grep para mostrar todas las líneas que NO coinciden con el patrón dado. Esta 'coincidencia inversa' se usa con -v
opción:
grep -v search_pattern filename
Puedes combinar -i
y -v
opciones.
Cuenta el número de líneas coincidentes
En lugar de mostrar las líneas coincidentes, puede obtener cuántas líneas coinciden con el patrón con -c
opción. Esto es c minúscula.
grep -c search_pattern filename
Puedes combinar -c
y -v
opción para obtener el número de líneas que no coinciden con el patrón dado. Por supuesto, puede usar la opción que no distingue entre mayúsculas y minúsculas -i
.
Mostrar números de línea de líneas coincidentes
Para mostrar los números de línea de las líneas coincidentes, puede usar -n
opción.
grep -n search_pattern filename
Puedes hacer lo mismo con la búsqueda inversa.
Buscar en múltiples archivos
Puede proporcionar más de un archivo para buscar en grep.
grep search_pattern file1 file2
Eso podría funcionar, pero un ejemplo más práctico es buscar en un tipo particular de archivos. Por ejemplo, si desea buscar una cadena solo en scripts de shell (archivos que terminan en .sh), puede usar:
grep search_pattern *.sh
Buscar todos los archivos en un directorio recursivamente
Puede realizar una búsqueda recursiva con la opción grep -r
. Buscará el patrón dado en todos los archivos del directorio actual y sus subdirectorios.
grep -r search_pattern directory_path
Mostrar solo los nombres de los archivos
Por defecto, grep muestra las líneas coincidentes. Si ha ejecutado la búsqueda en varios archivos y solo desea ver qué archivos contienen la cadena, puede usar -l
opción.
grep -l search_pattern files_pattern
Digamos que quiere ver qué archivos de Markdown contienen la palabra "manual", puede usar:
grep -l handbook *.md
Buscar solo la palabra completa
Por defecto, grep mostrará cualquier línea que contenga la cadena dada. Puede que no siempre quieras eso. Si está buscando la palabra 'hecho', también mostrará líneas que contengan las palabras 'doner' o 'abandoned'.
Para hacer una búsqueda grep solo de palabras completas, puede usar la opción -w
:
grep -w search_string file
De esta manera, si busca la palabra 'hecho', solo mostrará líneas que contengan 'hecho', no 'doner' o 'abandoned'.
Buscar patrones de expresiones regulares
Puede superpotenciar su búsqueda utilizando el patrón regex. Hay una opción dedicada -e
que permite usar el patrón de expresiones regulares y la opción -E
que permite usar patrones extendidos de expresiones regulares.
grep -e regex_pattern file
Buscar este o aquel patrón
Puede buscar varios patrones en la misma búsqueda grep. Si quieres ver las líneas que contienen un patrón u otro, puedes usar el operador OR |
. Sin embargo, debe escapar este carácter especial de la siguiente manera.
grep 'pattern1\|pattern' filename
Puede usar múltiples patrones con el operador OR.
No hay una opción específica para el operador AND. Puede usar grep varias veces con redirección de tubería para eso.
Buscar archivos binarios
Grep ignora los archivos binarios por defecto. Puede hacer que busque en archivos binarios como si fuera un archivo de texto usando -a
opción.
grep -a pattern binary_file
Descargar hoja de trucos del comando Grep
Puede marcar esta página para consultar rápidamente las opciones del comando grep y los casos de uso.
También puede descargar esta hoja de trucos de grep en formato PDF, imprimirla y guardarla en su escritorio para echar un vistazo rápido sin perder tiempo.
Descargar Grep Command Cheatsheet GRATISDescarga instantánea de comandos grep comunes con descripción en formato PDF.grep-command-cheatsheet.pdf78 KB
Avíseme si tiene algún otro caso de uso común de grep que le gustaría ver en esta página.