Traitement de données de XML en Bash
Résolu
jeljed
Messages postés
1
Statut
Membre
-
zipe31 Messages postés 38797 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 38797 Date d'inscription Statut Contributeur Dernière intervention -
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
- Ce logiciel gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - 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
$
;-))