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 :

Modifier la valeur dans un fichier en fonction du nom de la variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut Modifier la valeur dans un fichier en fonction du nom de la variable
    Bonjour à tous

    j'ai un fichier de configuration contenant plusieurs noms de variable, chaque variable est affectée à la même valeur.

    nom_var1 = 127
    nom_var2 = 127

    et ces noms de variable se retrouvent dans plusieurs fichiers du même répertoire fichier1.yaml, fichier2.yaml

    1) Comment modifier la valeur de chaque variable (et non le nom) pour obtenir ce résultat par exemple
    nom_var1 = 128
    nom_var2 = 126
    ce qui me permettra de relancer le shell pour modifier par exemple 126 en 125 (je ne souhaite pas faire une recherche sur nom_"var1 = 127" mais uniquement si je trouve nom_var1 alors je remplace 127 par exemple ou 126 par une valeur que je proposerai ($valeur1)

    2) Comment écrire ma boucle for pour faire ce changement pour tous les fichiers (cette question est facultative, et je n'ai pas encore rechercher).

    Merci pour votre aide

    Cordialement

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Si j'avais ce besoin (j'en doute), j'utiliserais "sed" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^nom_var1 =.*/nom_var1 = manouvellevaleur1/;s/^nom_var2 =.*/nom_var2 = manouvellevaleur2/' fichier[0-9].yaml

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Merci Flodelarab pour ton aide.

    J'ai récopié ton programme :
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Si j'avais ce besoin (j'en doute), j'utiliserais "sed" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^nom_var1 =.*/nom_var1 = manouvellevaleur1/;s/^nom_var2 =.*/nom_var2 = manouvellevaleur2/' fichier[0-9].yaml

    J'ai repris ton code, je ne comprends pas le résultat :

    j'ai créé un fichier myfile :
    nom_var1= 100
    nom_var2= 100

    Si je lance la commande pour remplacer la valeur nom_var1 de 100 par 1 et la valeur nom_var2 de 100 par 2

    sed -i 's/^nom_var1 =.*/nom_var1 = 1/;s/^nom_var2 =.*/nom_var2 = 2/' myfile

    rien n'est modifié (je souhaite que la variable dans mon fichier soit modifiée, j'ai donc rajouté l'option -i mais sans l'option, j'ai le même résultat que la commande cat myfile puisque tout est recopié à l'écran sans aucune modif.

    De plus en réalité la ligne à modifier est la suivante :
    nom_var1= '100'
    nom_var2= '100'
    la valeur à modifier est 100, située entre quote ou '100' mais le programme devra différencier le ' de '100' et le ' de "sed -i ' "

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Si on change les hypothèses, on change les conclusions. À toi d'adapter.

    Pour le 'simple quote', 2 possibilités :

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Je me suis mal exprimé, je te remercie pour ton code, j'avais oublié un espace.

    Merci pour tes réponses

    Cordialement

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

Discussions similaires

  1. modifier un valeur dans un fichier XML
    Par sekaijin dans le forum ANT
    Réponses: 4
    Dernier message: 17/02/2009, 14h50
  2. Réponses: 6
    Dernier message: 15/02/2008, 11h10
  3. Réponses: 5
    Dernier message: 12/10/2007, 10h06
  4. Modifier une valeur dans un fichier xml
    Par arthrax dans le forum VBScript
    Réponses: 3
    Dernier message: 03/04/2007, 09h46
  5. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15

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