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 :

Tri d'une partie d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut Tri d'une partie d'un fichier
    Bonjour,

    Afin de pouvoir comparer facilement deux versions d'un extract xml, j'ai besoin de trier le contenu de certaines balises.

    Mon xml est de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <documents>
      <document>
        <field name="toto">valeur<field>
        <field name="properties">
           <prop name="b">
           <prop name="a">
         <field/>
        <field name="titi">autrevaleur<field>
      <document/>
     
     
      <document>
        <field name="toto">valeur<field>
        <field name="properties">
           <prop name="c">
           <prop name="a">
         <field/>
        <field name="tutu">autrevaleur<field>
      <document/>
     
    ...
    <documents/>
    Je souhaite donc trier pour chaque document les balises inclues entre les balises qui ont pour nom properties (par ordre alphabétique) pour obtenir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <documents>
      <document>
        <field name="toto">valeur<field>
        <field name="properties">
           <prop name="a">
           <prop name="b">
         <field/>
        <field name="titi">autrevaleur<field>
      <document/>
    
    
      <document>
        <field name="toto">valeur<field>
        <field name="properties">
           <prop name="a">
           <prop name="c">
         <field/>
        <field name="tutu">autrevaleur<field>
      <document/>
    
    ...
    <documents/>
    J'ai essayé avec sed en utilisant des plages d'adresses mais je ne sais pas si il est possible de trier.

    sed -n -e '/<field name="properties">/,/<field/>/p' doc.xml

    Pouvez-vous me faire une suggestion ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par garfieldcut Voir le message
    Pouvez-vous me faire une suggestion ?
    Bonjour.
    A priori, je verrais bien un automate d'état fini avec awk, avec 2 états hors-properties dans-properties.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #Dans l'état (de départ) hors-properties, 
    #  je sors les lignes sur la stdout.
    #  lors de la rencontre de la balise "properties", 
    #    je crée un fichier temporaire vide 
    #    et je transite dans l'état dans-properties.
     
    #Dans l'état dans-properties, 
    #  je sors les lignes dans le fichier temporaire.
    #  lors de la rencontre de la balise field/, 
    #    j'appelle "sort" sur le fichier temporaire, 
    #    je sors le résultat sur la stdout, 
    #    j'efface le fichier temporarie 
    #    et je transite dans l'état hors-properties.

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut
    Merci pour l'info, je vais essayer avec awk.

    Je ne connais pas encore awk, ça doit être aussi simple à utiliser que sed

    Même pas peur

    Je vous tiens au courant si j'arrive à faire un truc concluant.

Discussions similaires

  1. Awk extraire une partie d'un fichier
    Par titexe dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2006, 11h54
  2. [VB6]Lire une partie d'un fichier .txt
    Par patoch76 dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 02/05/2006, 20h49
  3. Réponses: 5
    Dernier message: 24/02/2006, 10h12
  4. [VB]recherche dans une partie d'un fichier texte
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/01/2006, 11h56
  5. tri sur une partie d'un champ
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 19/09/2005, 11h25

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