Bash : colorier un peu la sortie stdout ?

isidorus -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Utilisateur anonyme
     
    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
  2. isidorus
     
    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. Utilisateur anonyme
       
      sed sera appliqué à la fin de program2
      pas sur GNU Linux.

      program1
      { program2 | sed ...;} &
      program3
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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