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 avec guillemets


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut SED avec guillemets
    Bonjour,

    Je voudrais remplacer dans un fichier une option. Cette option est comme ceci :

    OPTION="TRUE"

    Avec SED je voudrais passer l'option à FALSE donc je compter faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/OPTION="TRUE"/OPTION="FALSE"/g' /etc/fichier
    Cela ne fonctionne pas...

    Comment faire ?

    Merci

  2. #2
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Tu peux utiliser le caractère d'échapement \ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed 's/OPTION=\"TRUE\"/OPTION=\"FALSE\"/g'

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut
    Salut,

    Non cela ne fonctionne pas quand même J'avais essayé, j'obtiens une erreur du style

    sed: -e expression n°1, caractère 45: option inconnue pour `s'

  4. #4
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Ah
    Bon on a peut être pas tout à fait les mêmes version de sed
    Mais pour info je viens de me créer un fichier essai.txt avec pour contenu
    OPTION="TRUE"
    et la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed -i -e 's/OPTION=\"TRUE\"/OPTION=\"FALSE\"/g' essai.txt
    a bel et bien fonctionné.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut
    Ha...

    Sur une option simple cela fonctionne :
    OPTION="TRUE"
    Par contre sur une option "étendu" cela ne fonctionne pas :

    OPTION="-u user -p password"
    Si je veux modifier l'option pour obtenir :

    OPTION="-u toto -p tyty"
    J'utilise sed sous une debian lenny....

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut
    J'ai compris le problème...

    Quand j'utilise un chemin cela ne fonctionne pas :

    -u toto -p password -h /var/lib/toto
    En fait comment passer le chemin correct pour la modification de l'option ?

  7. #7
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Bonjour,

    Sed utilise comme délimiteur le caratère "slash". Or les chemins utilisent également ce caractère.
    Pour que sed ne confonde pas les slashs des chemisn avec des délimiteurs, il faut les protéger, de la même façon que pour d'autres caractères spéciaux (cf 1er message) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/OPTION=\"-u toto -p password -h \/var\/lib\/toto\"/OPTION=\"FALSE\"/g' /etc/fichier
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 716
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 716
    Par défaut
    Il est cependant possible d'utiliser d'autres séparateurs. Par exemple @ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's@OPTION="-u toto -p password -h /var/lib/toto"@OPTION="FALSE"@g' /etc/fichier

  9. #9
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Ah oui ?!

    Ce séparateur est opérationnel nativement ?

    Je vais tester.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    sed prend le premier caractere apres le "s" comme separateur
    donc sed s,toto,tata,g fonctionne aussi bien que sed s:toto:tata ......

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/06/2007, 09h55
  2. [PHP-JS] problème avec guillemets
    Par nicerico dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2007, 15h53
  3. Réponses: 2
    Dernier message: 23/03/2007, 12h42
  4. [MySQL] sql et texte avec guillemets
    Par licorne dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 24/12/2005, 22h49
  5. Probleme avec guillemets dans commande HREF
    Par angelevil dans le forum ASP
    Réponses: 4
    Dernier message: 02/05/2005, 20h06

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