Pages : 1
#1 Le 21/06/2016, à 15:12
- aduxas
séparateur complexe awk
Après 18 mois d'absence, j'ai un peu perdu la main avec awk. J'ai un fichier format GPX que je veux traiter. Ce qui m'intéresse, ce sont les lignes
<trkpt lon="-71.371627" lat="41.968243"><ele>60.75</ele><time>2016-06-20T14:06:48Z</time></trkpt>
J'aimerais calculer le dénivelé positif total. Il me faut donc extraire la valeur après <ele>, 60.75 dans l'exemple. Si celle-ci est supérieure à la précedente, je la rajoute à la somme courante. Une solution bête et méchante est de substituer les chaines qui entourent la valeur par un caractère que j'utiliserai ensuite comme séparateur de champ, mais je me demandais s'il y a de idées simples pour faire le tout en une seule commande awk.
Dernière modification par aduxas (Le 21/06/2016, à 16:34)
Hors ligne
#2 Le 21/06/2016, à 16:31
- aduxas
Re : séparateur complexe awk
Ça me revient... Ceci marche:
awk -F"<\/?ele>" 'BEGIN{old=300}; $2>old{sum+=$2-old}; /trkpt/{old=$2}; END{print sum}' fic.gpx
Hors ligne