Tekstin parsimista

Elikkä pitäisi jotenkin saada gpx-tiedostossa (esim navigaattoreissa käytetty waypoint-file) olevasta datasta yksi osa erilleen. Esimerkkirivi tiedostosta:

Tuosta siis pitäisi saada tuo desc-tagien sisällä oleva kilometrimäärä käpisteltäväksi. Mielellään tietty muodossa “9.5” mutta tietty muoto “9.5 Km” käy kanssa. Tarkoituksena siis olisi vähän laskeskella noilla luvuilla joten ne pitäisi saada edes jotenkin napattua tuosta sekamelskasta. Pari tuntia manpageseja lueskelin ja kiroilin, mutta toimivaa ratkaisua en vain keksinyt.

Eli joku skriptiesimerkki millä tuo hoituisi tai edes vinkkiä millä komennoilla tuota lähtee perkaamaan, niin johan auttaisi paljon.

edit:
Nykyinen koodi joka kaivaa nuo kokonaismatkat on siis tällainen:

#!/bin/sh
rm ./tracklength.txt
touch ./tracklength.txt
for i in ./*.gpx ; do
  cat $i | grep Finish >> ./tracklength.txt
done

Ja tavoitteena siis olisi laskea kaikkien gpx-fileissä olevien reittien yhteispituus.

Varmasti siistimminkin saa, mutta meikäläisen taidoilla seuraavasti:

tulostaa 9.5

Kiitoksia! Tuolla pääsee jo pitkälti eteenpäin, tosin ei tuokaan ihan täysin oikein jostain syystä toimi mutta 90% trackeista tuo antaa oikean tuloksen. Tuosta on jo hyvä jatkaa ihmettelyä.

Minä käyttäisin awkia tässä tapauksessa:

Ja tulostaa:9.5

Veikkailinkin että joku tänne fiksumman keinon postaa. Eli trilogin keino on luultavemmin varmatoimisempi, suosittelen miuluummin sen käyttämistä :slight_smile:
Itse en ole awkia lähtenyt opettelemaan kun sedissäkin tulee ongelmia sillontällöin… Toki voit kertoa esimerkin tapauksesta jossa tuo minun keino ei toimi, niin ihmettelen sitä sitten. :stuck_out_tongue:

Noniin, nyt on sitten tuota awk-versiota testattu ja se toimii kuin junan vessa. Kiitoksia!

Tuossa sed-versiossa tuntui tulevan sontaa mukana jos käsiteltävällä rivillä oli ääkkösiä vaikkapa tuossa name-tagissa, muuten näytti toimivan.

Muistaakseni ikinä en ole ennen awkia käyttänyt yhtään mihinkään, näyttäisi olevan aika näppärä työkalu kun vaan oppisi käyttämään.