digamos, tengo el siguiente resultado de ls:
$ ls -lAhF /bin
-rwxr-xr-x 1 root root 905K Apr 10 2010 bash*
-rwxr-xr-x 3 root root 31K Dec 26 2011 bunzip2*
-rwxr-xr-x 1 root root 505K Nov 15 2010 busybox*
-rwxr-xr-x 3 root root 31K Dec 26 2011 bzcat*
lrwxrwxrwx 1 root root 6 Jun 24 2012 bzcmp -> bzdiff*
...
Estoy buscando una manera, cómo podría colorear la segunda columna. Sé cómo usar sed para colorear cualquier patrón, pero no sé cómo colorear una columna específica. Básicamente, necesito insertar '\033[0;31m'
después del primer espacio y '\033[0m'
enfrente del segundo espacio. O tal vez hay una manera mucho más elegante?
text-processing
colors
usuario1968963
fuente
fuente
ls --color -l | sed -e $'s/ *[^ ]* /\033[0;31m&\033[0m/'
Respuestas:
Con GNU
grep
siempre que haya sido construido con soporte PCRE :Con
sed
:Tenga en cuenta que el uso
setaf
asume que el terminal admite secuencias de escape de color ANSI, por lo que también podría codificarlo, lo que también lo haría menos detallado. Aquí conksh93
(tambiénbash
yzsh
) sintaxis:Para generalizar a la enésima columna:
Referencias
fuente
grep -P
es fantastico. Muchas gracias.¿Algo como esto?
Editar: use los
tput
subcomandos adecuados .fuente
$1
Sin embargo, la configuración romperá la alineación de la columna.rmso
es cancelarsmso
sin embargo (modo destacado), nobold
. En muchos terminales (tput rmso
no se cancelatput bold
).