¿Hay un comando que se pueda usar para resaltar fácilmente (con colores, texto en negrita o con el fondo invertido / invertido) cadenas específicas en stdin mientras se pasa toda la cadena a stdout? Estoy pensando en construirlo , pero prefiero usarlo si ya existe. Algunas características deseables:
- Las cadenas de resaltado separadas se resaltan de manera diferente, de forma automática. Por ejemplo, la primera cadena se resaltará en rojo, la segunda en verde, la tercera en azul sin configuración manual .
- Detecta el soporte de color y recurre a negrita / invertida / otros métodos de resaltado donde están disponibles.
- Permitir la coincidencia de expresiones regulares y cadenas literales.
- Preferiblemente hace algo inteligente si las coincidencias se superponen, como "foobar" y "barbar".
- Nada se modifica entre stdin y stdout, excepto la adición de códigos de color.
Respuestas:
¿Quizás el colorante genérico de Radovan Garabík (grc) ? Espera un archivo de configuración como argumento y funciona con regexp's. Por lo tanto, no del todo sin la configuración, pero puede usar la sustitución del proceso del proceso (
<(list)
), por lo que, por supuesto, sin configuración manual :-)fuente
grc
tiene un script de ayuda:grcat
. Aquí hay un ejemplo de colorear todas las letras mayúsculas en rojo. Paso 1: Configura el archivo de configuración:printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps
Paso 2; Úselo:echo Hello World | grcat red-caps
... La página de manual indica 3 directorios de configuración que busca, y luego sugiere (?) Que el archivo de configuración puede ser una ruta absoluta, pero este último método para encontrar el archivo de configuración solo funciona con rutas relativas para mí (grc versión 1.3)¡Sed al rescate!
Puede mejorar esto (ya que realmente lo necesita) pero funciona bastante bien.
En aras de la simplicidad, hilight acepta un par de argumentos (primero la coincidencia, segundo el color) En este script, el atributo siempre está en negrita
Lea man console_codes (Graphic Rendition) para ver secuencias de escape de color, o intente esto
Tiene inconvenientes importantes ya que el uso de este funciona:
pero esto en absoluto:
porque [: dígito:] encuentra los números en las secuencias de escape en las sustituciones anteriores.
Algo como:
siempre funcionará como salvo.
Usando el comando de tiempo, encontré que esto aumenta en cuatro el tiempo transcurrido, que no es demasiado.
Puede reemplazar el comando sed con cualquier otro analizador que desee o que se ajuste a sus necesidades (awk, etc.)
fuente
También se puede usar egrep con un patrón que coincida con cada línea en caracteres no imprimibles, como:
fuente
Clide funciona bien. Lo uso en RHEL 6.2, desde el repositorio EPEL
fuente
Si su versión de
grep
viene con coloración, puede usar la alteración regexp para hacer que grep resalte el texto y también coincida con cada línea para que no se excluya nada. Lo siguiente debería hacer el truco:fuente
Como mencionó en el enlace,
grep --color=always
solo funciona para un patrón. Dicho esto, no creo que exista tal herramienta.fuente
Yo uso http://em.readthedocs.org/ . Fácil de instalar en varias plataformas gracias a Python. Simple y funciona bien.
fuente
em
, modifique su respuesta para dejar en claro que no es un usuario, sino el autor de la herramienta sugerida.