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


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 42
    Par défaut sed + variable
    Bonjour,

    J'aimerais savoir comment faire pour remplacer les valeurs d'une variable par une autre.
    J'ai fait un truc assez simple pour tester: j'ai la variable toto que je veux remplacer par la variable titi. J'ai fait un sed basique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
     
    toto="bbb"
    titi="aaa"
     
    resp=sed 's/$toto/$titi/g'
    echo $resp
    Si quelqu'un pouvait m'aider la dessus, merci beaucoup.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Citation Envoyé par chattam Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resp=sed 's/$toto/$titi/g'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp=sed "s/$toto/$titi/g"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp=sed 's/'"$toto"'/'"$titi"'/g'

  3. #3
    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,
    Citation Envoyé par disedorgue Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp=sed "s/$toto/$titi/g"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp=sed 's/'"$toto"'/'"$titi"'/g'
    Rien à dire sur la syntaxe de sed, par contre concernant l'affectation de variable, aie aie aie
    Et sans compter qu'il manque aussi un poil de substance à traiter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp=$(sed 's/'"$toto"'/'"$titi"'/g' FICHIER)

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bah, j'ai pas trop compris ce qu'il voulait faire au juste, j'ai donc pas chercher à savoir s'il voulais exécute le sed et avoir le résultat dans sa variable, ou s'il voulait juste une variable qu'il exécuterait ensuite.
    Car même ton exemple me semble bancal (dans la vrai vie): parser tout un fichier pour modifier un pattern, et retourner le tout dans une variable...

  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
    Ben je me suis basé sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resp=sed "s/$toto/$titi/g"
    echo $resp
    qui écrit comme ça ne sert à rien, de part la mauvaise syntaxe d'affectation de variable et du fait de l'absence de données à traiter.

    Après rien n'empêche de récupérer dans une variable le contenu intégral d'un fichier où on a substitué des motifs, non ?

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    [Mauvaise fois]Arf... de toute façon ma syntaxe même en affectation de variable est foireuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ toto="bbb"
    $ titi="aaa"
    $ res=sed "s/$toto/$titi/g"
    bash: s/bbb/aaa/g: No such file or directory
    Donc avec la bonne syntaxe, il veut peut-être un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ toto="bbb"
    $ titi="aaa"
    $ res="sed s/$toto/$titi/g"
    echo $res
    sed s/bbb/aaa/g
    $res fichier
    Après, pour l'affectation d'un fichier dans une variable comme dans le cas présent, on le fait souvent mais en connaissance de cause.Ici, on a aucun contexte, je me vois mal mettre un fichier de plusieurs centaine de Méga dans une variable (c'était plus dans ce sens que je parlais)
    [/mauvaise fois]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 42
    Par défaut
    En faites, j'utilise la variable $toto dans un fichier. Je désire remplacer toute les variables toto par celle de titi. C'est tout.

    Pk ne pas utilisez directement titi dans ce cas? Parce que je suis obligé d'utiliser toto pour récupérer certaines informations.

Discussions similaires

  1. sed variable interpretée
    Par ImagingAllthe dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/06/2012, 12h03
  2. problème sed variable
    Par chacalpuant1987 dans le forum Linux
    Réponses: 2
    Dernier message: 25/05/2011, 21h03
  3. sed et regexp avec variables
    Par vpovpo dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 29/12/2007, 20h52
  4. Utilisation de sed avec les variables dans un Shell
    Par mbole dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 05/07/2007, 17h46
  5. La commande sed ne prend pas ma variable du shell
    Par Michaël dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/10/2006, 19h11

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