Traitement de données de XML en Bash
Résolu
jeljed
Messages postés
1
Statut
Membre
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour,
j'ai plusieurs fichies xml qui ressemblent à ça:
<track id="TR14.2" mainDir="down">
<trackTopology>
<trackBegin id="TRB14.2" pos="0" absPos="40595">
<macroscopicNode ocpRef="PTCAR885"/>
</trackBegin>
<trackEnd id="TRE14.2" pos="4795" absPos="35800">
<macroscopicNode ocpRef="PTCAR1092"/>
</trackEnd>
</trackTopology>
<trackElements>
<speedChanges>
<speedChange id="S14.2" pos="0" absPos="40595" dir="up" vMax="140"/>
</speedChanges>
<gradientChanges>
<gradientChange id="G14.2.6397" pos="4607" absPos="35988" dir="down" slope="2.2"/>
<gradientChange id="G14.2.6398" pos="3988" absPos="36607" dir="down" slope="2.5"/>
<gradientChange id="G14.2.6399" pos="3588" absPos="37007" dir="down" slope="1.9"/>
<gradientChange id="G14.2.6400" pos="2908" absPos="37687" dir="down" slope="1.7"/>
<gradientChange id="G14.2.6401" pos="1871" absPos="38724" dir="down" slope="0"/>
</gradientChanges>
<radiusChanges>
<radiusChange id="R14.2.6454" pos="4475" absPos="36120" dir="down" radius="2273"/>
<radiusChange id="R14.2.6455" pos="4335" absPos="36260" dir="down" radius="0"/>
<radiusChange id="R14.2.6456" pos="4193" absPos="36402" dir="down" radius="2020"/>
<radiusChange id="R14.2.6457" pos="4193" absPos="36402" dir="down" radius="1961"/>
<radiusChange id="R14.2.6458" pos="4063" absPos="36532" dir="down" radius="5900"/>
<radiusChange id="R14.2.6459" pos="4063" absPos="36532" dir="down" radius="6500"/>
<radiusChange id="R14.2.6460" pos="3918" absPos="36677" dir="down" radius="4762"/>
<radiusChange id="R14.2.6461" pos="3728" absPos="36867" dir="down" radius="3635"/>
<radiusChange id="R14.2.6462" pos="3426" absPos="37169" dir="down" radius="0"/>
</radiusChanges>
<levelCrossings/>
<electrificationChanges>
<electrificationChange id="E14.2" pos="0" absPos="40595" dir="up" type="overhead" voltage="3000"/>
</electrificationChanges>
</trackElements>
Je travail sous Ubuntu et je voudrais ressortir les données de gradient et de radius dans un fichier txt sous la forme:
Gradient:
Pos Slope
Pos Slope
Radius:
Pos Radius
Pos Radius
Quelqu'un aurait il une idée...Je suis débutant dans le domaine...
Merci :)
j'ai plusieurs fichies xml qui ressemblent à ça:
<track id="TR14.2" mainDir="down">
<trackTopology>
<trackBegin id="TRB14.2" pos="0" absPos="40595">
<macroscopicNode ocpRef="PTCAR885"/>
</trackBegin>
<trackEnd id="TRE14.2" pos="4795" absPos="35800">
<macroscopicNode ocpRef="PTCAR1092"/>
</trackEnd>
</trackTopology>
<trackElements>
<speedChanges>
<speedChange id="S14.2" pos="0" absPos="40595" dir="up" vMax="140"/>
</speedChanges>
<gradientChanges>
<gradientChange id="G14.2.6397" pos="4607" absPos="35988" dir="down" slope="2.2"/>
<gradientChange id="G14.2.6398" pos="3988" absPos="36607" dir="down" slope="2.5"/>
<gradientChange id="G14.2.6399" pos="3588" absPos="37007" dir="down" slope="1.9"/>
<gradientChange id="G14.2.6400" pos="2908" absPos="37687" dir="down" slope="1.7"/>
<gradientChange id="G14.2.6401" pos="1871" absPos="38724" dir="down" slope="0"/>
</gradientChanges>
<radiusChanges>
<radiusChange id="R14.2.6454" pos="4475" absPos="36120" dir="down" radius="2273"/>
<radiusChange id="R14.2.6455" pos="4335" absPos="36260" dir="down" radius="0"/>
<radiusChange id="R14.2.6456" pos="4193" absPos="36402" dir="down" radius="2020"/>
<radiusChange id="R14.2.6457" pos="4193" absPos="36402" dir="down" radius="1961"/>
<radiusChange id="R14.2.6458" pos="4063" absPos="36532" dir="down" radius="5900"/>
<radiusChange id="R14.2.6459" pos="4063" absPos="36532" dir="down" radius="6500"/>
<radiusChange id="R14.2.6460" pos="3918" absPos="36677" dir="down" radius="4762"/>
<radiusChange id="R14.2.6461" pos="3728" absPos="36867" dir="down" radius="3635"/>
<radiusChange id="R14.2.6462" pos="3426" absPos="37169" dir="down" radius="0"/>
</radiusChanges>
<levelCrossings/>
<electrificationChanges>
<electrificationChange id="E14.2" pos="0" absPos="40595" dir="up" type="overhead" voltage="3000"/>
</electrificationChanges>
</trackElements>
Je travail sous Ubuntu et je voudrais ressortir les données de gradient et de radius dans un fichier txt sous la forme:
Gradient:
Pos Slope
Pos Slope
Radius:
Pos Radius
Pos Radius
Quelqu'un aurait il une idée...Je suis débutant dans le domaine...
Merci :)
A voir également:
- Traitement de données de XML en Bash
- Fuite données maif - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Xml download - Télécharger - Édition & Programmation
- Traitement de texte gratuit - Guide
- Supprimer les données de navigation - Guide
1 réponse
Salut,
;-))
$ cat plop <track id="TR14.2" mainDir="down"> <trackTopology> <trackBegin id="TRB14.2" pos="0" absPos="40595"> <macroscopicNode ocpRef="PTCAR885"/> </trackBegin> <trackEnd id="TRE14.2" pos="4795" absPos="35800"> <macroscopicNode ocpRef="PTCAR1092"/> </trackEnd> </trackTopology> <trackElements> <speedChanges> <speedChange id="S14.2" pos="0" absPos="40595" dir="up" vMax="140"/> </speedChanges> <gradientChanges> <gradientChange id="G14.2.6397" pos="4607" absPos="35988" dir="down" slope="2.2"/> <gradientChange id="G14.2.6398" pos="3988" absPos="36607" dir="down" slope="2.5"/> <gradientChange id="G14.2.6399" pos="3588" absPos="37007" dir="down" slope="1.9"/> <gradientChange id="G14.2.6400" pos="2908" absPos="37687" dir="down" slope="1.7"/> <gradientChange id="G14.2.6401" pos="1871" absPos="38724" dir="down" slope="0"/> </gradientChanges> <radiusChanges> <radiusChange id="R14.2.6454" pos="4475" absPos="36120" dir="down" radius="2273"/> <radiusChange id="R14.2.6455" pos="4335" absPos="36260" dir="down" radius="0"/> <radiusChange id="R14.2.6456" pos="4193" absPos="36402" dir="down" radius="2020"/> <radiusChange id="R14.2.6457" pos="4193" absPos="36402" dir="down" radius="1961"/> <radiusChange id="R14.2.6458" pos="4063" absPos="36532" dir="down" radius="5900"/> <radiusChange id="R14.2.6459" pos="4063" absPos="36532" dir="down" radius="6500"/> <radiusChange id="R14.2.6460" pos="3918" absPos="36677" dir="down" radius="4762"/> <radiusChange id="R14.2.6461" pos="3728" absPos="36867" dir="down" radius="3635"/> <radiusChange id="R14.2.6462" pos="3426" absPos="37169" dir="down" radius="0"/> </radiusChanges> <levelCrossings/> <electrificationChanges> <electrificationChange id="E14.2" pos="0" absPos="40595" dir="up" type="overhead" voltage="3000"/> </electrificationChanges> </trackElements> $ awk 'BEGIN { FS="\"" } { if (/gradientChange id/) { POS[$4]=$10 } if (/radiusChange id/) { RAD[$4]=$10 } } END { print "Gradient:" for (i in POS) print i" "POS[i] printf "\nRadius:\n" for (j in RAD) print j" "RAD[j] } ' plop > fich.txt $ cat fich.txt Gradient: 3988 2.5 2908 1.7 4607 2.2 3588 1.9 1871 0 Radius: 4475 2273 4063 6500 4335 0 3426 0 3918 4762 3728 3635 4193 1961 $
;-))