IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Remplacer le code couleur Unix par l'équivalent HTML


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Remplacer le code couleur Unix par l'équivalent HTML
    Bonjour,

    J'affiche à l'écran une code que je redirige vers un fichier.
    Je souhaite ensuite transmettre ce fichier au format HTML.
    Pour celà il faut donc que je substitue le code couleur UNIX et les sauts de lignes à son équivalent html

    Seulement j'ai essayé avec tr ou sed, rien n'y fait je n'arrive pas.

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/bin/sh
     
    ROUGE="\033[31m"
    ROUGE_HTML="<font color='red'>"
    BR="\n"
    BR_HTML="<br>"
     
    echo -e "Toto va etre ecrit en rouge \n\n $ROUGE toto  \n\n" | tee -a test.txt
     
    sed -i -e "s/$ROUGE/$ROUGE_HTML/g" test.txt
    sed -i -e "s/$BR/$BR_HTML/g" test.txt
    Je récolte toutes les erreurs telles que:
    "unterminated `s' command"
    mais jamais le résultat...

    Si une bonne âme peut m'aider...
    Merci par avance

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Il suffit de refaire un "echo" de ta ligne en changeant les variables "$ROUGE" et "$BR" par "$ROUGE_HTML" et "$BR_HTML".

    Juste pour info, ton fichier "test.txt" ne contient que du texte, sans couleur et sans variable, de ce fait tes commandes "sed" ne servent à rien
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    Bonjour,

    bien sûr que le fichier ne contient pas que du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     echo -e '\033[31m toto \033[m' > test.txt
    cat -v test.txt
    ^[[31m toto ^[[m
    où l'on voit deux problèmes :
    - le fichier ne contient pas \033, mais le code d'échappement ANSI ^[
    - cette commande sed doit opérer avec le [, de la variable ROUGE, protégé.

    c'est plus facile en bash, et avec le code d'échappement ANSI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ rouge="^[[31m" cl="^[[m"
    $ echo "${rouge}bla bla$cl" > test.txt 
    $ sed -r "s/${rouge//[/\[}/rouge> /" test.txt | cat -v
    rouge> bla bla^[[m

    en sh, ce serait plutôt (toujours avec le code d'échappement ANSI) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rouge="^[[31m" cl="^[[m"
    echo "$rouge bla bla $cl" > test.txt
    sed -r "s/$(echo "$rouge" | sed -r 's/\[/\\\[/')/rouge/g" test.txt
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 33
    Points
    33
    Par défaut
    Tu peux m'expliquer ce que tu veux dire par
    - cette commande sed est qu'elle doit opérer avec le <b>[</b>, de la variable ROUGE, protégé.
    Et aussi cette partie ${rouge//[/\[}, ou le nom que cette méthode porte s'il en a une je chercherais car je ne connais pas.
    pour moi les {} ne servent qu'à bien délimiter le nom de ta variable donc je suis surpris de voir des caractères entre la fin du nom de la variable et le }

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    oups <b>[</b> est une faute de frappe, je voulais mettre le caractère [ en gras. c'est corrigé.
    ce caractère est interprété par sed, il faut donc le protégé par un anti-slash.

    ${parametre//motif/chaine} tu trouveras ça dans le man bash
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 33
    Points
    33
    Par défaut
    La portion de code pour sh me renvoie la même erreur que tout ce que j'ai pu essayé jusqu'ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression #1, char 17: unterminated `s' command
    sed me désespère...

Discussions similaires

  1. Remplacer les lettres accentuées d'un fichier par leur équivalent html
    Par Michel Deriaz dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 07/03/2011, 21h12
  2. convertir le code couleur RGB ( ou RVB ) vers HTML
    Par ours_en_pluche dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 24/09/2009, 13h35
  3. remplacer du code par une fonction
    Par bullrot dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/11/2007, 12h08
  4. Réponses: 8
    Dernier message: 15/07/2006, 18h59
  5. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo