Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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