Bonjour,
Une de mes commandes renvoie un tableau, et j'aimerais pouvoir coloriser le premier mot de chaque ligne que me retourne cette commande, mais je ne vois pas comment faire. Quelqu'un a une idée ?
Bonjour,
Une de mes commandes renvoie un tableau, et j'aimerais pouvoir coloriser le premier mot de chaque ligne que me retourne cette commande, mais je ne vois pas comment faire. Quelqu'un a une idée ?
Comme ça par exemple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; print }'
Salut,
Ou en utilisant un subterfuge comme "egrep" et son option "--color" :
Penser à adapter en fonction du séparateur de champs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ echo -e "A B C D E\nA B C D E\nA B C D E\nA B C D E" |egrep --color '^[^ ]*' A B C D E A B C D E A B C D E A B C D E $![]()
Merci beaucoup !
Alors ca marche sauf que le texte que j'affiche normalement possède déjà des couleurs qui sont maintenant effacée
En fait je me complique peut être, ce que je veux est effectuer une suite de grep et grep -v qui me supprime toute sorte de fichiers que je ne veux jamais. La commande marche, mais je perds la coloration du nom des fichiers.
Ben recolore le de la même manière. Exemple si c'est le champs 2 :
Et si le reste de la ligne doit être coloré (exemple avec du vert) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; $2="\033[35m"$2"\033[m"; print }'
Etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; $2="\033[35m"$2"\033[32m"; print }'
Malheuresement je ne peux pas, ce n'est pas une coloration de colone, mais bien un mot/phrase précis à chaque fois (le resultat d un grep --color en fait).
Dans ce cas tu peux peut-être faire le awk avant ton grep --color.
En tout cas comme le disait fort justement N_BaH un minimum de précision ne ferait pas de mal, comme par exemple la commande que tu utilises (entière) ainsi qu'un exemple de ce qui sort. Merci.
En admettant que le pattern que tu cherches soit dans la variable '$pattern', tu peux recolorer cette expression avec awk a posteriori.
Exemple :
Et, bon, j'ai mis un grep parce que tu l'utilises mais dans cet exemple il n'y en a même pas besoin. C'est pour ça que ce serait bien de voir un peu ta "suite de grep / grep -v"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pattern="sda" dmesg | grep $pattern | \ awk -vP="$pattern" '{ $1="\033[31m"$1"\033[m"; gsub(P,"\033[32m"P"\033[m"); print }'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pattern="sda" dmesg | \ awk -vP="$pattern" '/'"$pattern"'/ { $1="\033[31m"$1"\033[m"; gsub(P,"\033[32m"P"\033[m"); print }'
Merci bien je vais essayer ca !
Partager