2011-04-07 11 views
6

¿Es posible usar sed para cambiar el color de fondo de las pestañas (o cualquier otro texto), de modo que, por ejemplo, podría ejecutar algo como lo siguiente?Use sed para agregar color de fondo a las pestañas?

somefunction | sed -e 's/(some pattern)/(set bg color)\1(unset bg color)/g' 
+0

sí, esto es posible. Espero que alguien venga y te dé la respuesta, porque no estoy en la computadora donde estoy haciendo esto ahora y no recuerdo cómo lo hice. algo que ver con los códigos de control de terminal, sin embargo. – drysdam

Respuesta

6

Sí:

#!/bin/bash 

norm_bg=$(tput sgr0) 
red_bg=$(tput setab 1) 

echo -e "foo\tbar\tbaz" | sed "s/\t/$red_bg $norm_bg/g" 

Ver este enlace para otros Color Codes (parte inferior)

terminal

4

Puede insertar la coloración directa dentro de su sed guión:

echo -e "foo\tbar\tbaz" | sed 's/\t/\o033[41m \o033[0m/g' 

Explicación:

  • conjunto de antecedentes en rojo = \o033[41m o \x1B[41m o \c[[41m
  • colores reset = \o033[0m o \x1B[0m o \c[[0m

También puede leer la pregunta/anwsers similares:
Escaping the '\' character in the replacement string in a sed expression.

Para obtener más información sobre códigos de color, consulte Arch wiki.

3

+1 para olibre.

Esto también funciona en osx y linux, bash y zsh usando extquote.

echo My name is Chad. | sed -e 's/Chad/\'$'\033[31m&\033[(B\033[m/' 
+0

+1 para ti también ;-) Muy buena idea usar extquote en esta situación: no tienes que recordar el modo 'sed' específico para manejar caracteres especiales. Reutilizaré tu propina ;-) Saludos – olibre

Cuestiones relacionadas