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 variable interpretée


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Par défaut sed variable interpretée
    Bonjour,
    Je cherche à modifier une ligne par une autre dans un fichier test.xml

    Voici la ligne à remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <property name="omero.fs.importUsers"  value="toto.titi"/>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <property name="omero.fs.importUsers"  value="toto.titi;valu.tre"/>
    j'ai bien les deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo $laligne
    <property name="omero.fs.importUsers" value="toto.titi"/>
     
    echo $Lanouvelleligne 
    <property name="omero.fs.importUsers" value="toto.titi;valu.tre"/>
    J'essaie avec la commande sed, mais cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i s/${laligne}/${Lanouvelleligne}/g test.xml
    et j'obtiens :

    sed: -e expression n°1, caractère 2: commande `s' inachevée
    Je ne sais pas ce qui est interprété et qui ne devrait pas.

    ImagingAll

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    As-tu remarqué que dans chacune de tes expressions, il y avait le caractère / que tu utilises aussi comme séparateur de commande dans ton appel à sed ?

    Tu pourrais commencer par changer de séparateur de commande en utilisant un caractère qui ne risque pas de se retrouver dans tes chaines.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i${laligne}§${Lanouvelleligne}§g test.xml
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Par défaut
    Merci, j'avais oublié cette option !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Par défaut
    J'ai un souci à cause des "
    Auriez vous un super protecteur de variable, plus fort que les accolades ?
    Merci
    Imaging All

  5. #5
    Expert confirmé

    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
    Par défaut
    Salut,

    Il faut quoter tes variables après être sortie de la syntaxe de "sed".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's#'"${motif}"'#'"${remplacement}"'#' fichier
    Les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ ligne='<property name="omero.fs.importUsers"  value="toto.titi"/>'
     
    $ new='<property name="omero.fs.importUsers" value="marie-laure.boizeau;jacques.rouquette;lm"/>'
    Le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $ cat plop 
    Bonjour,
    Je cherche a modifié une ligne par une autre dans un fichier test.xml
     
    Voici la ligne a remplacer
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
     
            <property name="omero.fs.importUsers"  value="toto.titi"/>
     
    par
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
     
            <property name="omero.fs.importUsers"  value="toto.titi;valu.tre"/>
     
    j'ai bien les deux lignes

    La commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $ sed  's#'"${ligne}"'#'"${new}"'#' plop 
    Bonjour,
    Je cherche a modifié une ligne par une autre dans un fichier test.xml
     
    Voici la ligne a remplacer
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
     
            <property name="omero.fs.importUsers" value="marie-laure.boizeau;jacques.rouquette;lm"/>
     
    par
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
     
            <property name="omero.fs.importUsers"  value="toto.titi;valu.tre"/>
     
    j'ai bien les deux lignes 
     
    $

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Par défaut
    Nikel,
    Merci beaucoup !
    en ajoutant le -i mon fichier est mis a jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -i 's#'"${ligne}"'#'"${new}"'#' plop
    Imagingall

Discussions similaires

  1. sed + variable
    Par chattam dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/06/2014, 14h17
  2. problème sed variable
    Par chacalpuant1987 dans le forum Linux
    Réponses: 2
    Dernier message: 25/05/2011, 21h03
  3. [XL-2003] Variables interpretes variables evaluees
    Par steph_12 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2009, 15h53
  4. Variable interpretée en tant que string
    Par Woocher dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/03/2009, 09h09
  5. mailto et variable à interpreter dans une vue
    Par gobgob dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 07/08/2007, 09h29

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