Uno de los comandos poderosos y ampliamente utilizados en Shell es grep. Busca en un archivo de entrada y hace coincidir las líneas en las que se encuentra el patrón dado. De forma predeterminada, todos los patrones coincidentes se imprimen en la salida estándar, que suele ser terminal. También podemos redirigir la salida coincidente a otras transmisiones, como un archivo.
El uso básico de grep es este:
$ grep "some text" file.txt
grep es capaz de resaltar en color la cadena coincidente en su salida. Pero, de forma predeterminada, esa opción está desactivada.
$ grep abc a_file.txt abcdef
El —-color El parámetro le dice a grep que coloree los términos de búsqueda en la salida, lo que los ayuda a destacar entre el resto del texto en la línea. Tú eliges qué color quieres usando el GREP_COLOR variable de entorno:export GREP_COLOR=36 te da cian, y export GREP_COLOR=32 te da verde lima.
Hay 3 opciones de color disponibles para usted:
- –color=automático
- –color=siempre
- –color=nunca
Con color=always, colorea la cadena coincidente.
$ grep --color=always abc a_file.txt abcdef
Muy a menudo, desea pasar página a través de la salida:
$ grep --color=always abc a_file.txt | less ESC[01;31mabcESC[00mdef (END)
El problema es que less no entiende esos caracteres de control, por defecto. Necesitas usar el parámetro -R.
$ grep --color=always abc a_file.txt |less -R abcdef
Alternativamente, use más.
$ grep --color=always abc a_file.txt | more abcdef
Otro escenario problemático es cuando desea guardar la salida grep en un archivo. El archivo de salida contendrá esos caracteres de control.
$ grep --color=always abc a_file.txt > myoutput.txt $ less myoutput.txt ESC[01;31mabcESC[00mdef myoutput.txt (END)
Con color=auto, muestra el color en la salida a menos que la salida se canalice a un comando o se redirija a un archivo.
Por último, puede especificar el parámetro de color en una variable de entorno específica de grep. Entonces, no tiene que ingresarlo en la línea de comando.
$ export GREP_OPTIONS='--color=always'
Nota final
El comando grep es uno de los más consistentemente útiles y poderosos en el arsenal de Terminal. Su premisa es simple:dado uno o más archivos, imprime todas las líneas en esos archivos que coincidan con un patrón de expresión regular en particular. Para resaltar el patrón coincidente, use la opción -color. Si bien la posición de la opción no importa, la convención es colocar las opciones primero.