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 :

Modification de variable pour SED


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Par défaut Modification de variable pour SED
    Bonjour,

    Je suis en train de faire un petit script et voici ce qui me bloque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LNG_HOME=$(pwd)
    PLATFORME='PROD'
    sed -i 's/'"DEFAULT=\/etc\/default\/$NAME_$PLATFORME"/"$LNG_HOME\/$PLATFORME\/conf\/default_$PLATFORME"'/g' $LNG_HOME/$PLATFORME/tomcat_$PLATFORME
    Je sais pourquoi sed fait une erreur.
    LNG_HOME = /home/toto/lng

    Le probleme est que sed reconnait le "/" comme une commande particulière.
    Comment transformer "/home/toto/lng" en "\/home\/toto\/lng"?

    Cordialement,
    vandman

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

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

    Voilà pourquoi on utilise d'autres séparateurs que l'oblique quand on traite des chemins de fichiers ou dossier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s@toto@tata@g
    s,toto,tata,g
    s|toto|tata|g
    s+toto+tata+g
    ... et bien d'autres au choix.

    Du coup, plus d'échappement nécessaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's@/home/bin@/home/tmp@g' fichier

  3. #3
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Par défaut
    Bonjour,

    Je dis oui, mais comment fais tu avec ma commande. Elle contient des variable shell qui doivent etre interpréter dans le sed?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/'"DEFAULT=\/etc\/default\/$NAME_$PLATFORME"/"$LNG_HOME\/$PLATFORME\/conf\/default_$PLATFORME"'/g' $LNG_HOME/$PLATFORME/tomcat_$PLATFORME
    Cordialement,

    Vandman

    PS: J'ai essayer en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LNG_HOME_SED="@""$LNG_HOME""@"
    Ca n'a pas fonctionné???

  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
    Bonjour,

    Tu n'as pas compris grand chose de l'explication de Flodelarab.
    Tu n'as pas besoin de modifier ta variable, juste la partie sed (pas testé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "s|DEFAULT=/etc/default/$NAME_$PLATFORME|$LNG_HOME/$PLATFORME/conf/default_$PLATFORME|g" $LNG_HOME/$PLATFORME/tomcat_$PLATFORME

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2014, 11h13
  2. Réponses: 0
    Dernier message: 16/02/2014, 22h30
  3. Réponses: 2
    Dernier message: 18/08/2008, 18h53
  4. [C#] Concatener 2 variables pour en faire une 3ème
    Par Thomas Lebrun dans le forum Windows Forms
    Réponses: 6
    Dernier message: 11/05/2004, 21h02
  5. 1 variable pour 2 processus
    Par kacedda dans le forum POSIX
    Réponses: 2
    Dernier message: 11/02/2003, 06h32

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