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 :

stocker le résultat d'un sed dans une variable : erreur


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut stocker le résultat d'un sed dans une variable : erreur
    salut à tous,
    je souhaite remplacer les caractères antislash présents dans une variabmes par le motif 'lolo', pour cela je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1 #!/bin/bash
    2 chaine="asdfghj\ehdbehd\uedued\yyy"
    3 echo "$chaine" | sed  's,\\,LOLO,g'
    et cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    asdfghjLOLOehdbehdLOLOueduedLOLOyyy
    ,

    Par contre, si je souhaite stocker le résultat de cette commande via les antiquotes dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      4 var=`echo "$chaine" | sed  's,\\,LOLO,g'`
      5 
      6 echo $var
    j'obtiens l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression #1, char 10: unterminated `s' command
    Si quelqu'un a une idée ... merci d'avance
    ben

  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,

    Et pourquoi pas tout simplement utiliser le remplacement de paramètre du bash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ echo ${chaine}
    asdfghj\ehdbehd\uedued\yyy
    
    $ new_chaine="${chaine//\\/lolo}"
    
    $ echo ${new_chaine}
    asdfghjloloehdbehdloloueduedloloyyy
    
    $
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut différence entre var=`commande` et var=$(commande) ?
    je viens de tester l'écriture : $(commande) pour stocker le résultat dans une variable en lieu et place des anti-quotes : ``
    voici donc la ligne qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=$(echo "$chaine" | sed  's,\\,LOLO,g')
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var=`echo "$chaine" | sed  's,\\,LOLO,g'`
    qui ne marche pas !

    Voilà qui m'amène à demander la différence entre var=`commande` et var=$(commande) ?

    merci d'avance,
    ben

  4. #4
    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
    Re-

    En fait l'ancienne syntaxe n'aime pas les anti-slashs, du moins il faut les protéger encore plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=`echo "$chaine" | sed  's,\\\,LOLO,g'`
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut
    ok, bon à savoir
    merci à toi
    à bientôt,
    ben

  6. #6
    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
    De rien
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  7. #7
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut
    mais si,
    j'insiste mon bon monsieur !
    et tac -> tag résolu
    ben

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2013, 15h04
  2. [VBS]Stocker résultat d'un SELECT dans une variable
    Par harry le ravi dans le forum VBScript
    Réponses: 2
    Dernier message: 13/08/2009, 12h52
  3. Réponses: 11
    Dernier message: 18/07/2006, 13h53
  4. Réponses: 4
    Dernier message: 14/09/2005, 17h23
  5. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 14h28

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