Echo d'une variable contenant un caractère de contrôle (/t)

Résolu
tbeghain Messages postés 63 Statut Membre -  
 tbeghain -
Bonjour,
J'ai un fichier qui contient "C:\temp".
J'affecte une variable TOTO pour lui donner le contenu de mon fichier
TOTO=$(<mon_fichier)

Lorsque je fais echo de cette variable, l'affichage est "C: emp" car il considère le \t comme le caractère de tabulation. Comment faire pour que l'affichage reflète exactement le contenu du fichier ? Merci

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Essaye avec
    echo -E ${TOTO}
    .
    0
    1. tbeghain
       
      Bonjour et merci, mais ça ne fonctionne pas, j'ai comme résultat à la commande echo -E $TOTO :

      -E c: emp

      Je suis sous AIX.
      0
    2. tbeghain
       
      Je pense que je dois passer par sed pour doubler le / pour lui dire de ne pas le prendre en compte, mais je n'y connais rien en sed.
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > tbeghain
         
        Et comme ça :
        echo "${TOTO/\\/\\\\}"
        ?
        0
      2. tbeghain > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour,
        Non, ça ne marche pas non plus
        "${TOTO/\\/\\\\}": 0403-011 The specified substitution is not valid for this command.
        0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    essayer
    TOTO=$(sed 's/\\/\\\\/' fichier)
    0
    1. tbeghain
       
      Yes, ça marche ! Merci beaucoup !
      0
    2. tbeghain
       
      Oui, euh ben j'ai été un peu vite pour dire que ça marche. En fait, ça fonctionne que sur un \t. Si mon répertoire est "\temp\toto" par exemple, le résultat de l'echo est "\temp oto". Il y aurait moyen d'étendre la commande à l'ensemble des \t, voire à tous les caractères de contrôle ? (\b, \c, etc...) ? Merci
      0
    3. tbeghain
       
      Bon, finalement, ça marche très bien pour tout. J'ai simplement rajouté un 'g' derrière la commande
      TOTO=$(sed 's/\\/\\\\/g' fichier)
      0