Bash : colorier un peu la sortie stdout ?

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

  1. 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
    1. 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
      1. sed sera appliqué à la fin de program2
        pas sur GNU Linux.

        program1
        { program2 | sed ...;} &
        program3
        0
    2. Contributeur
      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