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 :

Modfier par script certaine chaine d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 89
    Par défaut Modfier par script certaine chaine d'un fichier
    Bonjour à tous,

    J'essaye de faire un petit script qui me permet de remplacer certaines chaines de caractère par des variables que je passe à mon script.

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/sh
     
    sed -e 's/[^ ]*$$nom$$[^ ]*/'$1'/g' cfg_template.cfg>$1_temp.cfg
    sed -e 's/[^ ]*$$masource$$[^ ]*/'$2'/g' $1_temp.cfg>$1.cfg
     
    rm $1_temp.cfg
    le but est de remplacer $$nom$$ par la valeur de ma variable $1
    et de remplacer $$masource$ par la valeur de $2

    cela fonctionne presque, car au lieu de me remplacer juste $$nom$$ ou $$masource$$ par les variables, cela me remplace toute la ligne.

    Ou est le probème ? je n'arrive pas à voire.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 89
    Par défaut
    j'ai essayé avec cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/$$nom$$/'$1'/g' cfg_template.cfg | sed -e 's/$$masource$$/'$2'/g' > $1.cfg
    et j'obtient le meme resultat, cad que ca me remplace la ligne au lieux de la chaine.

    De plus cela pourrait il venir du fait que par exemple la chaine $$nom$$ ce trouve elle meme dans une chaine ?
    ex: aaaaaaaaaaaaaaa$$nom$$aaaaaaaaaaaa


    Merci

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut
    substitution de mots dans un fichier (commande perl) :
    "perl -pi.bak -e 's/xxx/yyy/g' liste de fichiers"
    options :
    p pour faire une boucle sur les lignes du fichier -
    i pour le fichier de svg (ici .bak) -
    e pour execute -
    /g si plusieurs occurences par ligne )

    ou
    sed '1,$s/mot-a-remplacer/mot-desire/g' fichier > nouveau-fichier

    a priori je vois pas pourquoi il faut mettre $$ avant et apres la variable

    personnellement j'aime presque mieux la commande perl qui me remplace dans le fichier d'origine avec une sauvegarde possible.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 89
    Par défaut
    ca fonctionne.
    merci!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/01/2014, 14h53
  2. Réponses: 9
    Dernier message: 21/07/2009, 17h45
  3. Récuperer div dont l'id se termine par une certaine chaine
    Par Kimado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2008, 16h20
  4. Réponses: 5
    Dernier message: 19/01/2007, 22h53
  5. Réponses: 21
    Dernier message: 29/09/2005, 19h33

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