Traiter XML avec awk
Résolu/Fermé
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
-
5 avril 2017 à 13:42
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 9 avril 2017 à 16:11
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 9 avril 2017 à 16:11
A voir également:
- Awk xml
- Xml viewer - Télécharger - Édition & Programmation
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Oxygen xml - Télécharger - Divers Web & Internet
- Xml parsing error ✓ - Forum Word
6 réponses
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
7 avril 2017 à 11:39
7 avril 2017 à 11:39
essayer
$ cat f2.awk
func f1() {t["FSMF"]=t["FBBA"]=t["FRGY"]=t["FRGU"]=0}
func f2(p1, p2, p3, p4, p5, p6) {printf "%-20s;%-10s;%-4s;%-4s;%-4s;%-4s\n", p1, p2, p3, p4, p5, p6}
BEGIN {f1(); f2("Site", "MODULE", "FSMF", "FBBA", "FRGY", "FRGU")}
/cmData|<managedObject class="HW"/ && n {f2( n, a[3], t["FSMF"], t["FBBA"], t["FRGY"], t["FRGU"]); f1()}
/<managedO.*HW/ {split($0, a, "/")}
/location/ {n=$3}
/userLab/ {t[$3]++}
$ awk -F "[<>]" -f f2.awk fichier.xml
Site ;MODULE ;FSMF;FBBA;FRGY;FRGU
Cogefar ;WBTS-2262 ;1 ;2 ;0 ;1
Kotto-Eglise-EPC ;WBTS-2269 ;1 ;1 ;3 ;0
$
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
6 avril 2017 à 12:28
6 avril 2017 à 12:28
hello
décris ce qu'il faut extraire
décris ce qu'il faut extraire
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
6 avril 2017 à 16:32
6 avril 2017 à 16:32
hello Dubcek ,
il faut extraire les données suivantes:
WBTS-2262 de la ligne <managedObject class="HW" version="HW1.0" distName="PLMN-PLMN/RNC-302/WBTS-2262/HW-1" id="1548162">
Cogefar de cette ligne <p name="locationName">Cogefar</p>
FSMF de cette ligne <p name="userLabel">FSMF</p>
FBBA de cette ligne <p name="userLabel">FBBA</p>
FRGU de cette ligne <p name="userLabel">FRGU</p>
donc pour le nom Cogefar on aura le tableau ci-dessous avec le décompte des module
Merci d'avance.
il faut extraire les données suivantes:
WBTS-2262 de la ligne <managedObject class="HW" version="HW1.0" distName="PLMN-PLMN/RNC-302/WBTS-2262/HW-1" id="1548162">
Cogefar de cette ligne <p name="locationName">Cogefar</p>
FSMF de cette ligne <p name="userLabel">FSMF</p>
FBBA de cette ligne <p name="userLabel">FBBA</p>
FRGU de cette ligne <p name="userLabel">FRGU</p>
donc pour le nom Cogefar on aura le tableau ci-dessous avec le décompte des module
Site; MODULE ;FSMF;FBBA;FRGY;FRGU Cogefar; WBTS-2262 ;1 ;2 ;0 ;1
Merci d'avance.
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
8 avril 2017 à 10:33
8 avril 2017 à 10:33
Bonjour Dubcek
Merci pour ton feedback le script marche parfaitement ,
Mais s'il te plait peut-tu m'expliquer le contenu du script f2.awk
Cdlt.
Merci pour ton feedback le script marche parfaitement ,
Mais s'il te plait peut-tu m'expliquer le contenu du script f2.awk
Cdlt.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
8 avril 2017 à 12:20
8 avril 2017 à 12:20
surtout cette ligne
je suppose que P1 P2 P3 P4 P5 P6 représente les champs
Site; MODULE ;FSMF;FBBA;FRGY;FRGU
que représente la ligne
Merci d'avance pour ton retour
func f2(p1, p2, p3, p4, p5, p6) {printf "%-20s;%-10s;%-4s;%-4s;%-4s;%-4s\n", p1, p2, p3, p4, p5, p6}
je suppose que P1 P2 P3 P4 P5 P6 représente les champs
Site; MODULE ;FSMF;FBBA;FRGY;FRGU
que représente la ligne
printf "%-20s;%-10s;%-4s;%-4s;%-4s;%-4s\n",
Merci d'avance pour ton retour
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
9 avril 2017 à 11:59
9 avril 2017 à 11:59
func f1() {t["FSMF"]=t["FBBA"]=t["FRGY"]=t["FRGU"]=0}
func f2(p1, p2, p3, p4, p5, p6) {printf "%-20s;%-10s;%-4s;%-4s;%-4s;%-4s\n", p1, p2, p3, p4, p5, p6}
on crée 2 fonctions, pour du code appelé plusieurs fois
f1 initialise à 0 les éléments du tableau associatif t
f2 imprime bien alignés les 6 paramètres (p1-6) passés à la fonction
%-20s : 20 car. alignés à gauche, %-10s 10 car. alignés à gauche, etc.
BEGIN {f1(); f2("Site", "MODULE", "FSMF", "FBBA", "FRGY", "FRGU")}
on inialise t et on affiche les en-têtes des colonnes
/cmData|<managedObject class="HW"/ && n {f2( n, a[3], t["FSMF"], t["FBBA"], t["FRGY"], t["FRGU"]); f1()}
à chaque début de bloc sauf le premier (&& n) ou en fin de fichier (cmData) on affiche les résultats par f2 et on réinitialise t par f1
/<managedO.*HW/ {split($0, a, "/")}
on stocke dans le tableau a les éléments de l'en-tête de bloc séparés par / (a[3]=WBTS...)
/location/ {n=$3}
on recupère le nom
/userLab/ {t[$3]++}
on compte dans le tableau t les lignes contenant FSMF, FBBA, FRGY, FRGU
func f2(p1, p2, p3, p4, p5, p6) {printf "%-20s;%-10s;%-4s;%-4s;%-4s;%-4s\n", p1, p2, p3, p4, p5, p6}
on crée 2 fonctions, pour du code appelé plusieurs fois
f1 initialise à 0 les éléments du tableau associatif t
f2 imprime bien alignés les 6 paramètres (p1-6) passés à la fonction
%-20s : 20 car. alignés à gauche, %-10s 10 car. alignés à gauche, etc.
BEGIN {f1(); f2("Site", "MODULE", "FSMF", "FBBA", "FRGY", "FRGU")}
on inialise t et on affiche les en-têtes des colonnes
/cmData|<managedObject class="HW"/ && n {f2( n, a[3], t["FSMF"], t["FBBA"], t["FRGY"], t["FRGU"]); f1()}
à chaque début de bloc sauf le premier (&& n) ou en fin de fichier (cmData) on affiche les résultats par f2 et on réinitialise t par f1
/<managedO.*HW/ {split($0, a, "/")}
on stocke dans le tableau a les éléments de l'en-tête de bloc séparés par / (a[3]=WBTS...)
/location/ {n=$3}
on recupère le nom
/userLab/ {t[$3]++}
on compte dans le tableau t les lignes contenant FSMF, FBBA, FRGY, FRGU
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
9 avril 2017 à 16:11
9 avril 2017 à 16:11
Bonjour Dubcek,
Merci infiniment pour ton feedback, ton explication m'a permi de tout pigier et adapter le code sur plusieurs fichiers XML.
Thanks
Merci infiniment pour ton feedback, ton explication m'a permi de tout pigier et adapter le code sur plusieurs fichiers XML.
Thanks