Cuando uso, por ejemplo cat file.txt | grep --color=tty "pattern"
, aparece el patrón que busco resaltado. Cuando quiero algo más de contexto en torno a cada golpe, grep tiene las -A
, -B
y los -C
parámetros.
Sin embargo, quiero mostrar todo el archivo (o cualquier salida de comando) y resaltar un cierto patrón. ¿Existe tal comando o herramienta de resaltado?
linux
command-line
DerMike
fuente
fuente
Respuestas:
Hubo una respuesta en unix.stackexchange.com que tenía este ingenioso truco:
o
que coincide con su patrón o el final de línea en cada línea. Solo se resalta el patrón.
fuente
GREP_OPTIONS='--color'
a su~/.bashrc
(o modifique la configuración para incluir--color
). Deberá iniciar un nuevo terminal o ejecutar esa asignación en la línea de comando en el terminal actual para que surta efecto.Me gusta ACK .
Es como grep, pero mejor. Se resalta de manera predeterminada, y con la
--passthru
opción muestra todo el archivo (o entrada estándar) en lugar de solo las líneas coincidentes.fuente
tail
, desde , entonces también necesita usar la--filter
opción. Por ejemplo:tail -f myLogFile | ack --filter --passthru pattern
También recomiendo el uso de
less
(o tal), pero quiero mostrarle una solución más didáctica. Una vez que haya definido esta función:Puedes usarlo de esta manera:
Nota: Esta versión distingue entre mayúsculas y minúsculas, para cambiar eso que se agrega
i
despuésg
en lased
expresión.fuente
tput
en lugar de codificar los valores. De esta manera también evita usarecho -e
, lo que puede tener otros efectos.prog | highlight "pattern"
ohighlight "pattern" file
:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
habilidades básicamente no existen. ¿Cómo tendría que cambiar eso para que coincida con el patrón de mayúsculas y minúsculas? De todos modos, lo agregaré a mi bash_functions include. Muchas gracias.Pasar
-C
agrep
con un valor suficientemente alto hará esto.fuente
less
está resaltando el patrón, entonceso
y luego en menos
/
para buscar un patrón que se resaltará.Nota al margen:
Puede mejorar su comando, por ejemplo,
establecer un alias
alias grep="grep --color=tty"
y usarlo así:fuente
grep
(zgrep, bzgrep, bzfgrep, etc.) Entonces, si desea que todas las formas de grep se comporten de manera consistente, necesitará establecer un alias para cada forma de grep. La nueva respuesta de @ Casual anterior no servirá para algo asíbzgrep pattern /var/log/messages.?.gz
, que es un ejemplo en el que el resaltado de color será MUY útil.Hay una buena herramienta de supercat , que sirve exactamente para ese propósito. Puede colorear la salida de su consola y producir un html "resaltado" a partir de su entrada.
fuente
/etc/supercat
Ubuntu), que configuran las reglas de coloración, básicamente son pares de colores / expresiones regulares (con algunas reglas adicionales); La página de manual también es corta y agradable.spcrc
archivo de sintaxis vim en vim.org/scripts/script.php?script_id=2676