Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 23h07   #1
Membre confirmé
 
Inscription : juin 2006
Messages : 566
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 566
Points : 277
Points : 277
Par défaut Coloriser une colone

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 ?
Djobird est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/03/2011, 01h07   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

la description est vague, je le serai aussi :
en utilisant les codes d'échappement ANSI
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/03/2011, 01h13   #3
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Code :
echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; print }'
Comme ça par exemple ?
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/03/2011, 09h15   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Ou en utilisant un subterfuge comme "egrep" et son option "--color" :

Code :
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
$
Penser à adapter en fonction du séparateur de champs
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/03/2011, 15h08   #5
Membre confirmé
 
Inscription : juin 2006
Messages : 566
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 566
Points : 277
Points : 277
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.
Djobird est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/03/2011, 16h07   #6
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Ben recolore le de la même manière. Exemple si c'est le champs 2 :

Code :
echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; $2="\033[35m"$2"\033[m"; print }'
Et si le reste de la ligne doit être coloré (exemple avec du vert) :

Code :
echo "$tableau" | awk '{ $1="\033[31m"$1"\033[m"; $2="\033[35m"$2"\033[32m"; print }'
Etc...
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/03/2011, 16h31   #7
Membre confirmé
 
Inscription : juin 2006
Messages : 566
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 566
Points : 277
Points : 277
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).
Djobird est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/03/2011, 16h55   #8
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
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.
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/03/2011, 19h23   #9
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
En admettant que le pattern que tu cherches soit dans la variable '$pattern', tu peux recolorer cette expression avec awk a posteriori.

Exemple :
Code :
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 }'
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 :
1
2
3
pattern="sda"
dmesg | \
awk -vP="$pattern" '/'"$pattern"'/ { $1="\033[31m"$1"\033[m"; gsub(P,"\033[32m"P"\033[m"); print }'
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/03/2011, 15h02   #10
Membre confirmé
 
Inscription : juin 2006
Messages : 566
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 566
Points : 277
Points : 277
Merci bien je vais essayer ca !
Djobird est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h17.


 
 
 
 
Partenaires

Hébergement Web