Récupérer des info d'un fichier xml

salut tout le monde :)

j'ai le fichier xml suivant :

<Resumes>
<info1>
<titre> unix </titre>
<auteur> mari </auteur>
</info1>
<info2>
<titre> ksh </titre>
<auteur> myriam </auteur>
</info2>
</Resumes>

je veux récupérer par exemple l'information mari à l'aide une commande unix mais je ne sais pas comment,
aidez moi svp
je suis bloquer
j'attends vos réponse

merci d'avance

8 réponses

  1. Modérateur
    Salut,

    Que mari ou miryam aussi ?
    0
    1. je veux récupérer seulement que mari
      0
      1. Modérateur
        jp@MDK:~/tmpfs ssh$ cat mariam
        <Resumes>
        <info1>
        <titre> unix </titre>
        <auteur> mari </auteur>
        </info1>
        <info2>
        <titre> ksh </titre>
        <auteur> myriam </auteur>
        </info2>
        </Resumes>
        
        jp@MDK:~/tmpfs ssh$ sed -n '/<info1>/,/<\/info1>/{/<auteur>/ s/[^>]*>\([^<]*\).*/\1/p}' mariam
         mari
        
        jp@MDK:~/tmpfs ssh$

        ;-))
        0
        1. j'ai essayer la commande mais il me retourne le message suivant:

          sed: Function /<info1>/,/<\/info1>/{/<auteur>/ s/[^>]*>\([^<]*\).*/\1/p} cannot be parsed.
          :(
          0
          1. Modérateur
            Euh... ton fichier contient bien les mêmes motifs que l'exemple ci-dessus ?

            Tu es sous GNU/Linux ou Windows ?

            Peux-tu faire un copier/coller de ton fichier ainsi que de la commande tapée et du message d'erreur ?
            0
          2. je suis sous GNU/Linux et j'ai vérifier les motifs de mon fichier mariam.txt : j'ai les même motif que l'exemple

            la commande que tape est la suivant :
            $ sed -n '/<info1>/,/<\/info1>/{/<auteur>/ s/[^>]*>\([^<]*\).*/\1/p}' mariam.txt

            et j'ai le message suivant:
            sed: Function /<info1>/,/<\/info1>/{/<auteur>/ s/[^>]*>\([^<]*\).*/\1/p} cannot be parsed.
            0
          3. Modérateur
            Quelle distrib ?
            Quelle version de "sed" ?
            0
        2. hello
          avec awk (ou nawk sur Solaris)
          $ nawk '/<info1>/ {f=1};/<\/info1>/ {f=0}; /<auteur>/ && f {print $2}' fichier
          mari
          $ 
          0
          1. merci dubece ca marche :d
            mais est ce que tu peux m'expliquer la commande parce que j'ai rien saisie dans la syntaxe
            0
            1. /<info1>/ {f=1} quand une ligne contient <info1> f=1 (vrai)
              /<\/info1>/ {f=0} quand une ligne contient </info1> f=0 (faux), on simule le /<info1>/, /<\/info1>/ de sed
              /<auteur>/ && f {print $2} si une ligne contient <auteur> et f est vrai, on est entre <info1> et </info1>, donc on imprime le 2ème champ
              0
              1. merci pour ton aide :)

                j'ai une autre question, je sais bien que je pose trop de question mais je suis vraiment bloquée:(

                ma question est la suivante:
                dans la commande que tu ma monter l'action que va appliquer le awk est d'écrire le résultat dans la sortie standard
                mais si on veut affecter le résultat à une variable comment on peut le faire??
                0
                1. Modérateur
                  VAR=$(nawk '/<info1>/ {f=1};/<\/info1>/ {f=0}; /<auteur>/ && f {print $2}' fichier)
                  0
                2. merciii pour les réponse vous m'avez bcp aider
                  0

              Discussions similaires

              question pix mot caché

              7 réponses