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] qui me supprime mes espaces ?!


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
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut [SED] qui me supprime mes espaces ?!
    Hello,
    j'ai un script, qui scrute un répertoire, et pour chaque fichier (xml) il doit me supprimer la balise <?xml ... > en début et en fin de fichier.

    Pour cela il y a la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Supprimer_Balise_Xml ()
    {
    Lc_Fichier=$1
     
    echo `sed -e 's/<?xml[^>]*>//g' ${Lc_Fichier}` > ${Lc_Fichier}	
     
    }
    Les balises dans le fichier en sortie sont bien supprimées , MAIS, dans le cas ou j'ai un fichier comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="iso-8859-1"?>
    <baliseA value="A    B" />
    <baliseX value="toto" />
    Quand je regarde le fichier en sortie du sed, la valeur de ma baliseA apparait avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <baliseA value="A B" />
    (avec plus qu'un seul espace donc, ce que je ne veux pas)

    Vous savez pourquoi? :o

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 348
    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 348
    Par défaut
    Bonjour,

    Oui, le problème ne vient pas de sed mais du echo (qui en passant est inutile)

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Hm ok, par contre, 'y'a un autre moyen de faire?

    Parce que, l'option -i du sed ne fonctionne pas sur cette version de shell, et si je fais juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/<?xml[^>]*>//g' ${Lc_Fichier} > ${Lc_Fichier}
    Ca n'a pas d'effet apparement :o

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    apparemment !
    parce que, en fait, la redirection (de rien) est effectuée avant l'exécution de la commande,
    donc la commande est exécutée sur un fichier vide,
    et donc, le fichier, après tout, est vide

    la version du shell n'est pour rien dans le fait que sed ne possède pas l'option -i; cela dépend de la version ... de sed

    il faut gérer (générer, et supprimer) un fichier temporaire.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 348
    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 348
    Par défaut
    Ou bien remplacer sed par perl (même syntaxe mais sans le commutateur g de la commande s de sed, qui d'ailleurs ne devait pas servir à grand chose dans ce cas précis, sauf si tu avait plusieurs fois le même pattern à modifier sur la même ligne ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -p -i -e 's/\<\?xml[^>]*>//' ${Lc_Fichier}
    EDIT: Ok, dans le cas perl, il faut protéger les '<?' car c'est considéré par le moteur de regex perl comme étant un commutateur.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Ok,
    du coup je suis passé par un fichier temp, ça fonctionne bien, merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2012, 15h52
  2. SaveAs qui me supprime mes virgules
    Par silvin dans le forum VBScript
    Réponses: 0
    Dernier message: 14/09/2011, 09h29
  3. une fonction qui permet de supprimer les espaces
    Par inayatallah dans le forum Débuter
    Réponses: 5
    Dernier message: 03/01/2010, 17h36
  4. [XSLT] fonction qui supprime les espaces
    Par calin0o dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/07/2009, 08h47
  5. Fonction qui supprime les espaces
    Par Faith's Fall dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/02/2006, 10h29

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