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 :

traitement de texte avec 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
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut traitement de texte avec sed
    bonjour,

    je m'ennuyait un peu, j'ai donc décidé d 'égayer ma journée en faisant un exo(in english of course) en sed

    malheureusement j'ai rapidement déchanté et cela dès la première question

    je dispose d'un texte et je dois supprimer les champs <article> et </article>
    j'ai écris cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '/<article>\|</article>/d' base3.txt
    mais malheureusement ça ne marche pas et je ne comprends pas pourquoi

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Parce qu'il faut protéger le délimiteur de motif par défaut (le slash "/") dès lors qu'il est présent dans l'un motif, dans ton cas "</article>" comprend un "/" qu'il faut protéger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '/<article>\|<\/article>/d' base3.txt
    Ou carrément changer de délimiteur, ce qui se fait en déclarant le 1er délimiteur et en le protégeant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '\#<article>\|</article>#d' base3.txt

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    en effet j'ai fait une erreur d'innatention

    ceci dit j'ai essayé tes codes et ça ne marche pas non plus

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par huître Voir le message
    en effet j'ai fait une erreur d'innatention

    ceci dit j'ai essayé tes codes et ça ne marche pas non plus
    Chez moi si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat plop 
    <article>
    patati
    </article>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -e '/<article>\|<\/article>/d'  plop 
    patati
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -e '\#<article>\|</article>#d'  plop 
    patati
    Et un petit nouveau pour le fun :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed '\#</*article>#d' plop 
    patati

  5. #5
    Membre très actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Par défaut
    chez moi ça fonctionne aussi

    merci pour l'astuce de l'échappement du délimiteur

    par contre pas très pratique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "\+toto+d" mon_fichier
    fonctionne mais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "+toto+d" mon_fichier
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s+toto+tata+" mon_fichier
    fonctionne mais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s\+toto+tata+" mon_fichier

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Pour la substitution il ne faut pas échapper le délimiteur, uniquement pour le délimiteur de motif, ce qui n'est pas la même chose

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

Discussions similaires

  1. Insérer du texte avec sed au sein d'une ligne
    Par laloupiote dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/01/2012, 17h16
  2. Pourquoi latex pour le traitement de texte avec sa gestion de l'emplacement des images?
    Par Thibaou dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 6
    Dernier message: 28/08/2009, 12h33
  3. select sur un champs texte avec traitement du texte
    Par nicerico dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/04/2009, 07h57
  4. Traitement de texte avec Python
    Par eyquem dans le forum Général Python
    Réponses: 3
    Dernier message: 07/02/2007, 09h48
  5. Réponses: 2
    Dernier message: 30/12/2006, 19h21

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