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 :

Rechercher une balise XML avec grep


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 346
    Par défaut Rechercher une balise XML avec grep
    Je veux chercher dans un fichier XML : XMLFichier cette balise et savoir le nombre des lignes contenant cet information
    <nom>Test1</nom>
    J’utilise ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    existe_BaliseNom=` grep –c  "<nom>Test1</nom>"  XMLFichier`
    	if [ "$existe_BaliseNom" -gt 0 ]
       	then      
       	echo "Il existe $existe_BaliseNom  fois"
       	fi
    Mais j’ai tjs « 0 », c a d l’élément not existe, est ce que vous avez une idée ?

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour,

    peux-tu montrer l'échantillon de ton fichier qui contient cette balise ?

  3. #3
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 346
    Par défaut
    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
    24
    25
    26
    27
    28
    29
    30
    31
    <?xml version="1.0" encoding="utf-16"?>
    <ecole>
    <etudiant>
     
      <nom>test</nom>
     
      <prenom>test</prenom>
     
      <niveau>test1</niveau>
     
    </etudiant>
     
    <etudiant>
     
     <nom>Test1</nom>
     
      <prenom>test</prenom>
     
      <niveau>test1</niveau>
     
    </etudiant>
    <etudiant>
     
      <nom>Test1</nom>
     
      <prenom>pr</prenom>
     
      <niveau>ni</niveau>
     
    </etudiant>
    </ecole>
    sachant que le code de recherche existe au fichier.ksh
    Vous avez une idée, est ce que j ai mal utilise grep, car malgré qu il existe <nom>Test1</nom> 2 fois, il m affiche 0?

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Alors là! Il y a un bug que tu aurais pu chercher longtemps.
    Je ne sais pas où tu as récupéré ton tiret mais ce n'est pas le bon tiret. Le tien est long alors que le tiret usuel est court.

    Pour te le prouver regarde ma console:
    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
    $ grep –c '<nom>Test1</nom>' /tmp/cuicui.txt 
    grep: <nom>Test1</nom>: Aucun fichier ou dossier de ce type
    $ grep '<nom>Test1</nom>' /tmp/cuicui.txt 
     <nom>Test1</nom>
      <nom>Test1</nom>
    $ grep -c '<nom>Test1</nom>' /tmp/cuicui.txt 
    2
    $ echo grep –c  "<nom>Test1</nom>"  XMLFichier |od -c
    0000000   g   r   e   p     342 200 223   c       <   n   o   m   >   T
    0000020   e   s   t   1   <   /   n   o   m   >       X   M   L   F   i
    0000040   c   h   i   e   r  \n
    0000046
    $ echo grep -c  "<nom>Test1</nom>"  XMLFichier |od -c
    0000000   g   r   e   p       -   c       <   n   o   m   >   T   e   s
    0000020   t   1   <   /   n   o   m   >       X   M   L   F   i   c   h
    0000040   i   e   r  \n
    0000044
    $ echo grep -c  "<nom>Test1</nom>"  XMLFichier |od -x
    0000000 7267 7065 2d20 2063 6e3c 6d6f 543e 7365
    0000020 3174 2f3c 6f6e 3e6d 5820 4c4d 6946 6863
    0000040 6569 0a72
    0000044
    Tu as un tiret codé par 342 200 223 au lieu d'avoir le tiret codé par 45 (2d en hexadécimal).

    Bonne chance

  5. #5
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 346
    Par défaut
    Merci pour ta réponse

    Mais j'essaye '<nom>Test1</nom>' et tjs je n'ai pas un résultat
    Sachant voici la MAJ de mon code final car les fichiers existant dans un reprtoire rep
    Le prb n est pas au tiret, car j ai essayé grep test_grep toute seule et aussi je n'ai pas un résultat ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for fichier in `ls rep`
     do
    	echo "Traitement de recherche"
     
    existe_BaliseNom =` grep –c  ‘<nom>Test1</nom>"rep/$fichier"`
    $test_grep =`grep "<nom>Test1</nom>" "rep/$fichier"`
     
    echo "$test_grep"
    	if [ "$existe_BaliseNom" -gt 0 ]
       	then      
       	echo "Il existe $existe_BaliseNom  fois"
    fi
    done
    Vous avez une idée?

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    ce n'est pas le bon tiret. Le tien est long alors que le tiret usuel est court.

Discussions similaires

  1. [JDOM] Récupérer le nom d'une balise XML avec JDOM
    Par cendrine15 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 10/04/2012, 15h18
  2. Repérer une balise XML dans une archive : problème avec zipgrep
    Par VforVincent dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/06/2011, 15h34
  3. Comment récupérer le nom d'une balise XML avec DOM ?
    Par Predatorus26 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 28/05/2010, 15h54
  4. Comment générer une balise XML globale avec COBOL ?
    Par Phil_phg dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/10/2007, 09h25

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