A menudo, en un archivo grande, debe buscar una línea específica de datos oculta en algún lugar en el medio del archivo. En lugar de desplazarse manualmente por todo el archivo, puede dejar que el comando grep lo busque. El formato de la línea de comandos para el comando grep es:
# grep [options] pattern [file]
El comando grep busca en la entrada o en el archivo que especifique líneas que contengan caracteres que coincidan con el patrón especificado. La salida de grep son las líneas que contienen el patrón coincidente. Debido a la popularidad del comando grep, ha sufrido muchos cambios de desarrollo a lo largo de su vida. Se han agregado muchas funciones al comando grep. Si busca en las páginas del manual el comando grep, verá lo versátil que es.
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 $
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