Bash : colorier un peu la sortie stdout ?

Fermé
isidorus - Modifié par isidorus le 20/02/2013 à 08:45
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 20 févr. 2013 à 14:56
Bonjour,

Voilà, j'ai plusieurs programme qui se lance à la suite et ça affiche pleine de chose à l'ecran et je suis noyé. J'ai besoin de visualiser un partie de la reponse d'un programme plus clairement en mettant seulement cette partie en couleur, après libre à moi de consulter le reste ou non.

je compte essayer quelque chose comme ça (sed \1=backreference):
program1  
program2 >temp &  
tail -f temp --pid=$! | sed 's /(chaine1.*chaine2)/<color>\1</color>/'  
program3  


Qu'en pensez vous ? y a t il une autre(meilleur) solution ? peut on eviter de creer le fichier temporaire temp ?

Merci
PS : je suis sous solaris et pas au boulot alors, c'est meme pas sur que les possibilité de tail et sed ont ces options.

3 réponses

Utilisateur anonyme
20 févr. 2013 à 09:41
salut,


pourquoi program2 doit-il être en arrière plan ?
ne peux-tu l'exécuter en dernier?

program2 | sed ...
N'y a-t-il qu'une partie de la sortie de program2 que tu veux colorer ?

Sinon
printf "\033[${coulAv};${coulAr}m"
program2
printf '\033m'
0
l'ordre de lancement des 'program' ne doit pas etre changer.

program2 | sed ... implique que sed sera appliqué à la fin de program2 au lieu que ça se fasse au fur et à mesure de l'affichage à l'ecran

c'est une partie de la sortie de program2, que je veux colorer

bon, sous solaris tail n'a pas l'option "--pid" :(
0
Utilisateur anonyme
20 févr. 2013 à 12:11
sed sera appliqué à la fin de program2
pas sur GNU Linux.

program1
{ program2 | sed ...;} &
program3
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
20 févr. 2013 à 14:56
hllo
essayer
red=$(tput setaf 1); bw=$(tput setaf 0)
program1
program2 | awk -v r="$red" -v bw="$bw" '{print r $0 bw}'
program3
0