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 : suppression de guillemet simple


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut Sed : suppression de guillemet simple
    Salut,

    j'ai honte de poser cette question, mais ce n'est pas faute d'avoir bataillé dans les recherches. Voilà, c'est très simple, dans chaque ligne d'un fichier de la forme :

    je souhaite supprimer l'expression " (Expr2 'Expr3')" pour n'avoir au final plus que :

    tout cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sed -e 's/(Expr1 \'Expr2\')/g' fichier
    sed -e 's/(Expr1 \\\'Expr2\\\')/g' fichier
    sed -e 's/(Expr1 '''Expr2''')/g' fichier
    ...
    ne marche pas

    Le pb est certainement dû au guillemet simple qui doit être interprété comme un caractère spécial mais là je vois plus comment passer outre.

    Merci pour toute aide ou piste

  2. #2
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Pour avoir un guillemet simple, met-le dans une chaine formée de guillemets doubles. Ou alors, ferme tes guillemets simples et utilise \'.

    La syntaxe de sed est s/motif/texte/g. Il te manque un / dans tes exemples.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Merci. Tu as raison, j'ai oublié un / ce qui donnerait (remplacement par une chaine vide) :

    sed -e 's/Expr1 (Expr2 'Expr3')//g'

    et donc avec les double guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -e 's/Expr1 ("Expr2 'Expr3')"//g'
    sed -e 's/Expr1 (Expr2 "'"Expr3"'")//g'
    mais ça ne marche pas non plus... Qu'entends-tu plus précisément par "ferme tes guillemets simples et utilise \' ?

  4. #4
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Non testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -e 's/Expr1 (Expr2 '\''Expr3)//g'
    sed -e "s/Expr1 (Expr2 'Expr3')//g"
    Selon ton fichier d'entrée, tu peux aussi faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "s/\(Expr1\).*/\1/"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    à première vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "s/Expr1 (Expr2 'Expr3')//g"
    a l'air de fonctionner En revanche, comment se fait-il que la protection par \ ne fonctionne pas, ce n'est pas considéré comme un caractère spécial ?

  6. #6
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    \ n'est pas interprété à l'intérieur de guillemets simples.

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

Discussions similaires

  1. guillemets simples et le "retour à la ligne"
    Par dridri dans le forum Langage
    Réponses: 6
    Dernier message: 26/02/2008, 16h50
  2. [sed]Suppression de saut de ligne dans certains cas
    Par Anthony.Desvernois dans le forum Linux
    Réponses: 11
    Dernier message: 09/07/2007, 11h33
  3. Suppression d'un simple quote
    Par Franck2mars dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/01/2007, 10h33
  4. Guillemets simples ou doubles
    Par Malikak dans le forum Langage
    Réponses: 5
    Dernier message: 22/06/2006, 18h05
  5. [Cookies] Guillemets simples et doubles?
    Par Yoyo_galère dans le forum Langage
    Réponses: 7
    Dernier message: 12/02/2005, 19h31

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