disons, j'ai la sortie suivante 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*
...
Je cherche un moyen, comment je pourrais coloriser la deuxième colonne. Je sais comment utiliser sed pour coloriser n'importe quel motif, mais je ne sais pas comment coloriser une colonne spécifique. Fondamentalement, je dois insérer '\033[0;31m'
après le premier espace et '\033[0m'
devant le deuxième espace. Ou peut-être existe-t-il une manière beaucoup plus élégante?
text-processing
colors
user1968963
la source
la source
ls --color -l | sed -e $'s/ *[^ ]* /\033[0;31m&\033[0m/'
Réponses:
Avec GNU
grep
fourni, il a été construit avec le support PCRE :Avec
sed
:Notez que l'utilisation
setaf
suppose que le terminal prend en charge les séquences d'échappement de couleurs ANSI, vous pouvez donc aussi le coder en dur, ce qui le rendrait également moins verbeux. Ici avecksh93
(aussibash
etzsh
) la syntaxe:Pour généraliser à la n ième colonne:
Références
la source
grep -P
est fantastique. Merci beaucoup.Quelque chose comme ça?
Modifier: utilisez les
tput
sous-commandes appropriées .la source
$1
rompra cependant l'alignement de la colonne.rmso
c'est d'annulersmso
(mode stand-out), nonbold
. Sur de nombreux terminaux (tput rmso
ne pas annulertput bold
).