Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1952 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  extraction des parties d'un fichier xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

extraction des parties d'un fichier xml

n°1278415
ensienne
Posté le 16-05-2011 à 15:33:14  profilanswer
 

Bonjour,
 
Je veux créer un script shell qui permet d'extraire des parties d'un fichier xml (définies par les noms des balises) et les mettre dans un autre fichier xml comme output.
 
Merci pour votre aide.

mood
Publicité
Posté le 16-05-2011 à 15:33:14  profilanswer
 

n°1278420
ensienne
Posté le 16-05-2011 à 16:03:30  profilanswer
 

j'ajoute une autre clarification. je cherche des informations entre des balises ouvrantes er fermantes bien déterminée.

n°1278422
ensienne
Posté le 16-05-2011 à 16:13:46  profilanswer
 

je vais extraire des lignes xml entre deux commentaires bien déterminées.

n°1278425
Fork Bomb
Obsédé textuel
Posté le 16-05-2011 à 16:59:30  profilanswer
 

cat, grep, sed, awk.
Voilà tes outils.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1278426
o'gure
Modérateur
Multi grognon de B_L
Posté le 16-05-2011 à 17:08:11  profilanswer
 

Fork Bomb a écrit :

cat, grep, sed, awk.
Voilà tes outils.


Je pense qu'il existe des outils plus dédiés pour exploiter facilement de l'XML (ce qui est un peu le but de l'XML)

 

sinon une rapide recherche :
http://www.unix.com/shell-programm [...] block.html


Message édité par o'gure le 16-05-2011 à 17:09:16
n°1278427
ensienne
Posté le 16-05-2011 à 17:23:41  profilanswer
 

je n'ai pas compris comment spécifier le block avec awk.
en fait g essayé avec awk mail il me retourne juste la ligne qui contient le motif de recherche.
Je veux extraire tout un block.

n°1278460
myocastor
Posté le 17-05-2011 à 13:46:07  profilanswer
 

Pourquoi pas avec une simple transformation xsl ?

n°1278465
ensienne
Posté le 17-05-2011 à 15:37:27  profilanswer
 

merci.
comment pourrais je utiliser une simple transformation xsl.

n°1278466
myocastor
Posté le 17-05-2011 à 15:50:56  profilanswer
 

Suppose que tu aies ce fichier xml:
<?xml version="1.0"?>
<toto>
 <titi>
  <tutu>valeur</tutu>
 </titi>
</toto>
 
Tu écris cette transformation par exemple:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
                               xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
 <xsl:template match="/toto/titi/tutu">
  <xsl:copy>
   <xsl:apply-templates />
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>
 
Que tu appliques par:
xsltproc fichier.xsl fichier.xml
 
 

n°1278468
ensienne
Posté le 17-05-2011 à 16:16:52  profilanswer
 

merci beaucoup de votre aide.  
JE n'arrive pas à résoudre cet étape dans mon travail. En fait je n'ai pas des balises qui s'ouvrent et se ferment. Je vais faire cet étape manuellement.
J'ai besoin d'aide sur la deuxième étape:
1. Supposons que j'ai eu les parties de xml dont j'ai besoin dan un autre fichier.
2. Je veux parcourir ce ficher et extraire des champs spécifiques. Si ce champ existe dans un autre fichier xml (que j'ai) => J'indique true
Si le champs existe dans ce fichier et n'existe pas dans l'autres=> J'indique nouveau.
Any help please

mood
Publicité
Posté le 17-05-2011 à 16:16:52  profilanswer
 

n°1278625
ensienne
Posté le 19-05-2011 à 10:58:53  profilanswer
 

bonjour,
 
je veux créer un script shell qui prend en input une lsite de mots et cherchent s'il existe dans un fichier xml.
 
merci beaucoup pour votre iade.
 

n°1278626
o'gure
Modérateur
Multi grognon de B_L
Posté le 19-05-2011 à 11:02:32  profilanswer
 
n°1278631
ensienne
Posté le 19-05-2011 à 13:05:15  profilanswer
 


j'ai crée un script qui prend en entrée le nom du fichier xml, la liste des mot à chercher. Il doit me retourner si chaque mot existe dnas le script xml et dans quelle ligne.
Voici ma version.
Je suis débutante et j'ai besoin de votre aide:
 

Code :
  1. #!/bin/bash
  2. read -p 'Quel est votre fichier XML ? ' file
  3. read -p 'Quel est votre liste ? ' liste
  4. count=$#
  5. for [ int i=1;i <= $count;i++ ]
  6. do
  7. if [ grep -io "$i" "$file" ]; then
  8. ligne = wc -l
  9. echo "$i is present à la ligne $ligne"
  10. else
  11.    echo "Je n'ai pas pu trouver ce mot"
  12. fi
  13. done


 
 
merci beaucoup pour votre aide.

n°1278633
o'gure
Modérateur
Multi grognon de B_L
Posté le 19-05-2011 à 13:24:04  profilanswer
 

je pense que tu n'as pas bien saisi l'utilité de la commande wc et si tu veux récupérer les lignes où sont présents tes mots il va te falloir traiter la sortie de grep à coup de awk (et relire le man de grep pour trouver comment afficher les numéros de ligne)

n°1278636
ensienne
Posté le 19-05-2011 à 14:25:41  profilanswer
 

o'gure a écrit :

je pense que tu n'as pas bien saisi l'utilité de la commande wc et si tu veux récupérer les lignes où sont présents tes mots il va te falloir traiter la sortie de grep à coup de awk (et relire le man de grep pour trouver comment afficher les numéros de ligne)


 Vous avez tout à fait raison.
 
Je dois utiliser awk.
Voici un exemple de output par grep directement pour déterminer le nombre de ligne.
20:    <capability name="bmp" value="true"/>
j'ai modifié ma commande comme suit pour avoir ce résultat:

Code :
  1. grep -n "$i" "$file"


maintenant je dois utiliser le awk pour extraire juste le motif nombre de ligne. J'ai fait comme suit:

Code :
  1. grep -n "$i" "$file" | awk -F ":" '{ print $0}'


 
mais ça n'a pas marché. Comment dois je la modifier.
 
Merci beaucoup.

n°1278639
ensienne
Posté le 19-05-2011 à 14:40:54  profilanswer
 

ensienne a écrit :


 Vous avez tout à fait raison.
 
Je dois utiliser awk.
Voici un exemple de output par grep directement pour déterminer le nombre de ligne.
20:    <capability name="bmp" value="true"/>
j'ai modifié ma commande comme suit pour avoir ce résultat:

Code :
  1. grep -n "$i" "$file"


maintenant je dois utiliser le awk pour extraire juste le motif nombre de ligne. J'ai fait comme suit:

Code :
  1. grep -n "$i" "$file" | awk -F ":" '{ print $0}'


 
mais ça n'a pas marché. Comment dois je la modifier.
 
Merci beaucoup.


 J'arrive à le modifier pour extraire le nombre de ligne. Voici la versin modifiée:

Code :
  1. #!/bin/bash
  2. file=$1
  3. liste=$*
  4. count=$#
  5. i=1
  6. for i in $*
  7. do
  8. echo $i
  9. occurence=$(grep -n "$i" "$file" | awk -F ":" '{ print $1}')
  10. echo $occurence
  11. if [ "$occurence" -gt 0 ]; then
  12.    echo "The format $i is present at ligne $occurence"
  13. else
  14.    echo "The format $i is not detected at the file $file"
  15. fi
  16. done


 
Mais il ne fonctionne pas comme il faut.
En fait il commence le parcours à partir de nom de script et le nom de fichier xml donné en paramètre. Je veux éliminer ses deux cas.Je veux qu'il commence son parcours à partir de paramètre 2. (enlever le nom du script et le nom du fichier xml donné en entrée).
En plus je veux avoir un affichage comme suit:
format1: lig1 lign2
avec fomat1 est le motif donné dans la liste d'entrée et lig1, lign2 les numéros de ligne ou est détecté ce motif dans le fichier xml.
 
Merci beaucoup pour votre aide.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  extraction des parties d'un fichier xml

 

Sujets relatifs
squid: intégrer un fichier d'@IPDécouper du texte dans un fichier
Perte de données: Lien du fichier briséemacs charge à chaque démarrage un fichier d'information [résolu]
Nagios et fichier hosts.cfgscript de gestion d'user, fin de fichier prématurée
Linux : suppression d'un programme (fichier) pendant qu'il s'exécuteInstallation D'un server de Fichier sous Linux (DLNa, FTP, Partage)
Plus de sujets relatifs à : extraction des parties d'un fichier xml


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR