El comando grep, en su forma más básica, es una herramienta de búsqueda. A diferencia de buscar o localizar, no se limita a encontrar nombres de archivos; se usa con mayor frecuencia para buscar en el contenido de un archivo una cadena de texto en particular. Como salida, grep muestra cada línea completa del archivo en el que se encontró su patrón de búsqueda. De esta manera, puede usar grep para procesar un archivo de texto y leer los contenidos que sean más pertinentes para usted. Por ejemplo, es posible que desee auditar los eventos de inicio de sesión de un usuario consultando un registro de acceso. En lugar de leer todo el registro o recorrer un término de búsqueda en un editor de texto, simplemente puede imprimir todas las líneas relevantes en la pantalla con el comando grep.
Sintaxis
La sintaxis del comando grep es:
# grep [options] {search pattern} {file names}
Uso de grep para buscar archivos
Además de buscar el contenido de los archivos, puede usar grep para buscar en un directorio con el fin de localizar un archivo determinado. El ls-l | El comando grep audit devuelve una lista larga de cualquier archivo en el directorio actual cuyo nombre contenga "auditoría".
Si desea invertir la búsqueda (líneas de salida que no coinciden con el patrón), use el parámetro -v:
$ grep -v t file1 one four five $
Si necesita encontrar los números de línea donde se encuentran los patrones coincidentes, use el parámetro -n:
$ grep -n t file1 2:two 3:three $
Si solo necesita ver un recuento de cuántas líneas contienen el patrón coincidente, use el parámetro -c:
$ grep -c t file1 2 $
Si necesita especificar más de un patrón coincidente, use el parámetro -e para especificar cada patrón individual:
$ grep -e t -e f file1 two three four five $
Si encuentra el siguiente error mientras ejecuta el comando grep:
grep: command not found
puede intentar instalar el siguiente paquete según su elección de distribución:
Distribución del sistema operativo | Comando |
---|---|
OS X | instalar cerveza grep |
Debian | apt-get install grep |
Ubuntu | apt-get install grep |
Alpino | apk agregar grep |
Arco Linux | pacman -S grep |
Kali Linux | apt-get install grep |
Cent OS | yum instalar grep |
Fedora | dnf instala grep |
Raspbian | apt-get install grep |
Ejemplos de comandos grep
1. Para interpretar PATRÓN como una expresión regular extendida:
# grep --extended-regexp PATTERN # grep -E PATTERN
2. Para interpretar PATRÓN como una lista de cadenas fijas:
# grep -F PATTERN # grep --fixed-strings PATTERN
3. Para interpretar PATRÓN como una expresión regular básica:
# grep -G PATTERN # grep --basic-regexp PATTERN
4. Para interpretar PATTERN como una expresión regular de Perl:
# grep -P PATTERN # grep --perl-regexp PATTERN
5. Para usar PATRÓN como patrón:
# grep -e PATTERN, # grep --regexp=PATTERN
6. Para obtener patrones de ARCHIVO, uno por línea:
# grep -f FILE, --file=FILE
7. Para ignorar las distinciones entre mayúsculas y minúsculas tanto en el PATRÓN como en los archivos de entrada:
# grep -i PATTERN # grep --ignore-case PATTERN
8. Para invertir el sentido de coincidencia, para seleccionar líneas que no coincidan:
# grep -v PATTERN # grep --invert-match PATTERN
9. Para seleccionar solo aquellas líneas que contengan coincidencias que formen palabras completas:
# grep -w PATTERN # grep --word-regexp PATTERN
10. Para seleccionar solo aquellas coincidencias que coincidan exactamente con toda la línea:
# grep -x PATTERN # grep --line-regexp PATTERN
11. Para ignorar el caso:
# grep -y PATTERN
12. Para suprimir la salida normal; en su lugar, imprima un recuento de líneas coincidentes:
# grep -c PATTERN # grep --count PATTERN
13. Para mostrar en color:
# grep --color PATTERN
14. Para suprimir la salida normal; en su lugar, imprima el nombre de cada archivo de entrada, desde fuera no se esperará:
# grep -L # grep --files-without-match
15. Para suprimir la salida normal; en su lugar, imprima el nombre de cada archivo de entrada desde el que se imprimió la salida:
# grep -l # grep --files-with-matches
16. A la quietud; no escriba nada en la salida estándar Salga inmediatamente con estado cero si se encuentra alguna coincidencia:
# grep -q # grep --quiet # grep --silent
17. Para dejar de leer un archivo después de NUM líneas coincidentes:
# grep -m NUM # grep --max-count=NUM
18. Para imprimir solo las partes coincidentes (no vacías) de una línea coincidente:
# grep -o PATTERN # grep --only-matching PATTERN
19. Para suprimir mensajes de error sobre archivos inexistentes o ilegibles:
# grep -s PATTERN # grep --no-messages PATTERN
20. Para imprimir el desplazamiento de bytes basado en 0 dentro del archivo de entrada antes de cada línea de salida:
# grep -b PATTERN # grep --byte-offset PATTERN
21. Para imprimir el nombre del archivo para cada coincidencia:
# grep -H PATTERN # grep --with-filename PATTERN
22. Para suprimir los prefijos de nombres de archivo en la salida:
# grep -h PATTERN # grep --no-filename PATTERN
23. Para mostrar la entrada que realmente proviene de la entrada estándar como entrada proveniente del archivo LABEL:
# grep -cd PATTERN | grep --label=mysearch -H PATTERN
24. Para prefijar cada línea de salida con el número de línea basado en 1 dentro de su archivo de entrada:
# grep -n PATTERN # grep --line-number PATTERN
25. Para asegurarse de que el primer carácter del contenido real de la línea esté en una tabulación:
# grep -T PATTERN # grep --initial-tab PATTERN
26. Para reportar compensaciones de bytes estilo Unix:
# grep -u PATTERN # grep --unix-byte-offsets PATTERN
27. Para generar un byte cero en lugar del carácter que normalmente sigue a un nombre de archivo:
# grep -Z PATTERN # grep --null PATTERN
28. Para imprimir NUM líneas de contexto final después de las líneas coincidentes:
# grep -A NUM PATTERN # grep --after-context=NUM PATTERN
29. Para imprimir NUM líneas de contexto inicial antes de las líneas coincidentes:
# grep -B NUM PATTERN # grep --before-context=NUM PATTERN
30. Para imprimir NUM líneas de contexto de salida:
# grep -C NUM PATTERN # grep --context=NUM PATTERN
31. Para procesar un archivo binario como si fuera texto:
# grep -a PATTERN /tmp/bin # grep -text PATTERN /tmp/bin
32. Suponer que el archivo es de tipo TYPE:
# grep --binary-files=TYPE PATTERN
33. Para Si un archivo de entrada es un dispositivo, FIFO o socket, use ACCIÓN para procesarlo:
# grep -D ACTION PATTERN # grep --devices=ACTION PATTERN
34. Para Si un archivo de entrada es un directorio, use ACCIÓN para procesarlo:
# grep -d ACTION PATTERN # grep --directories=ACTION PATTERN
35. Para omitir archivos cuyo nombre base coincida con GLOB:
# grep --exclude=GLOB PATTERN
36. Para omitir archivos cuyo nombre base coincida con cualquiera de los globos de nombre de archivo leídos de ARCHIVO:
# grep --exclude-from=FILE PATTERN
37. Para excluir directorios que coincidan con el patrón DIR de búsquedas recursivas:
# grep --exclude-dir=DIR PATTERN
38. Para procesar un archivo binario como si no contuviera datos coincidentes:
# grep -I PATTERN
39. Para buscar solo archivos cuyo nombre base coincida con GLOB:
# grep --include=GLOB
40. Para leer todos los archivos de cada directorio, recursivamente:
# grep -r PATTERN # grep -R PATTERN
41. Para usar el búfer de línea en la salida:
# grep --line-buffered PATTERN
42. Si es posible, use la llamada del sistema mmap para leer la entrada, en lugar de la lectura predeterminada:
# grep --mmap PATTERN
43. Para tratar los archivos como binarios:
# grep -U /tmp/file PATTERN # grep --binary /tmp/file PATTERN
44. Para tratar la entrada como un conjunto de líneas:
# grep -z PATTERN # grep --null-data PATTERN
45. Para mostrar la ayuda:
# grep -h
46. Para imprimir el número de versión del grep:
# grep -V