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 :

Sed - Délimiteurs et subsitution


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Sed - Délimiteurs et subsitution
    Bonjour,

    Je cherche à remplacer une ligne d'un fichier avec la commande "sed".
    Mon motif et ma valeur de remplacement contiennent des "/". J'ai donc cherché à changer le délimiteur de la commande mais rien n'y fait...
    Toutes les commandes que je trouve ne semblent pas fonctionner chez moi.

    Exemple (il n'y a pas de slash dans l'exemple, mais bon) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "test BONJOUR" | sed -e "s/$test.*$/tset 123/"
    tset 123
    => OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "test BONJOUR" | sed -e "s#test.*$#tset 123#"
    echo "test BONJOUR" | sed "s\#test.*$#tset 123#"
    etc.
    => sed: -e expression #1, char XX: unterminated `s' command

    J'ai essayé pas mal de syntaxes différentes, et je tombe toujours sur cette fichue erreur...

    Quelqu'un saurait m'éclairer ? Merci !

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "test BONJOUR" | sed -e "s+test.*$+tset 123+"
    tset 123
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "test BONJOUR" | sed -e 's+test.*$+tset 123+'                      
    tset 123
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "test BONJOUR" | sed -e 's#test.*$#tset 123#'
    tset 123
    entre " " le shell interprete en premier et $# est (souvent ? ) une variable du shell ( tu es en ksh ? ) contrairement a $+
    entre ' ' le shell n'interprete pas donc $# reste $# pour sed par contre on ne peut plus y mettre de variables ...

    autre exemple

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

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

    j'ajouterais que, dans ce cas de figure, le $ fait doublon, car il est implicite dans .*, lorsque cette expression n'est suivie de rien.

    $# est une variable des shells POSIX, qui exprime le nombre de paramètres positionnels passés en arguments à un script , ou à une fonction.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Ah ! Je n'avais pas pensé au $# du coup ! Parfois quand on a le nez dedans...
    Ca fonctionne très bien avec des simple quotes ou même sans le $.

    Merci à tous les deux. Bonne journée !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/11/2011, 10h23
  2. [Sed]Remplacer une série d'espaces par un délimiteur
    Par progfou dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/01/2011, 15h09
  3. Makefile et sed
    Par pitistef dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 10/02/2004, 15h06
  4. [langage] awk et sed dans script perl
    Par scoti dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2003, 18h26
  5. Pb avec une subsitution de touche :(
    Par ketthy dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/02/2003, 14h23

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