Tekstitiedoston muokkausta
Lähetetty: 27.1.2017 klo 9.27
Kyselin muutama vuosi sitten vinkkiä koordinaattitietoja sisältävän tekstitiedoston muokkaamiseksi rivejä poistamalla, ja sainkin siihen hyvän awk-komento-ohjeen: http://hopeinenomena.net/viewtopic.php?f=40&t=190143.
1) Nyt olisi samankaltainen ongelma.
Tiedosto sisältää x, y- ja z-koordinaatteja, yhden pisteen koordinaatit yhdellä rivillä, pilkulla ja välilyönnillä erotettuna, esim:
6101.93587955, 2199.79205609, 81.40916867, 1,
(Tuo lopun ", 1," on sellainen, mistä myös pitäisi päästä eroon. Siihen liittyy joitakin omituisuuksia, joista jäljempänä.)
Lukujen yksikkö on metri, joten tarkkuus on millin 100 000. osa. Löytyisikö jokin Pääte-ohjelman komento, jolla desimaalipisteen jälkeen pidetään vain kolme lukua ja loput poistetaan, mutta vain pilkkuun asti, ja seuraavalle luvulle sama operaatio, samoin viimeiselle. Lopputulos näyttäisi tältä (ilman viimeistä lukua 1):
6101.935, 2199.792, 81.409
Jotenkin siis että "säilytä pisteen jälkeen kolme merkkiä, poista loput kunnes tulee pilkku".
2) Palatakseni tuohon rivin viimeiseen lukuun 1. Sain sen vielä eilen poistettua komennolla:
Tuon pitäisi poistaa 4. sarake, jollaiseksi awk aina pilkun jälkeisen tekstin tunnistaa, mutta eilen loppupäivästä ja tänään se ei toimikaan. Uusi tiedosto kyllä syntyy, mutta viimeisen sarakkeen poisto on tehty vain 1. riville, ja vielä siten, että "1," on poistettu, samoin 2-rivin ensimmäinen sarake eli x-koordinaatti. 2-rivi Y-koordinaatista alkaen on 1-rivillä. Alunperin kolmen ensimmäisen rivin ryhmä näytti tältä:
6101.93587955, 2199.79205609, 81.40916867, 1,
6095.95898438, 2200.40478516, 81.34080505, 1,
6100.87402344, 2207.15954590, 81.26097107, 1
Nyt tältä:
6101.93587955, 2199.79205609, 81.40916867, 2200.40478516, 81.34080505, 1,
6100.87402344, 2207.15954590, 81.26097107, 1
Ja lisää ongelmia...
Lähtötiedostossa on myös tyhjiä rivejä. Enää ei toimi myöskään niiden poisto komennolla:
Eilen sen jälkeen kun lopun ylimääräinen ", 1," oli poistettu, sain myös onnistuneesti poistettua kunkin rivin lopusta viisi viimeistä merkkiä komennolla:
Tällä sain z-koordinaatista karsittua turhia desimaaleja. Viisi pistettä vastaa viittä mitä tahansa merkkiä. Tänään komento toimiikin niin, että se tehdään vain tiedoston loppuun, eli viimeiselle riville, eikä joka riville kuten eilen.
Voiko Päätteessä olla joku yleissäätö, joka vaikuttaa siten, että komennot tehdään vain kerran? Olen copy-pastennut komentoja tai selannut niitä Päätteen komentohistoriasta. Mutta eivät toimi.
Kiitos kaikesta avusta!
1) Nyt olisi samankaltainen ongelma.
Tiedosto sisältää x, y- ja z-koordinaatteja, yhden pisteen koordinaatit yhdellä rivillä, pilkulla ja välilyönnillä erotettuna, esim:
6101.93587955, 2199.79205609, 81.40916867, 1,
(Tuo lopun ", 1," on sellainen, mistä myös pitäisi päästä eroon. Siihen liittyy joitakin omituisuuksia, joista jäljempänä.)
Lukujen yksikkö on metri, joten tarkkuus on millin 100 000. osa. Löytyisikö jokin Pääte-ohjelman komento, jolla desimaalipisteen jälkeen pidetään vain kolme lukua ja loput poistetaan, mutta vain pilkkuun asti, ja seuraavalle luvulle sama operaatio, samoin viimeiselle. Lopputulos näyttäisi tältä (ilman viimeistä lukua 1):
6101.935, 2199.792, 81.409
Jotenkin siis että "säilytä pisteen jälkeen kolme merkkiä, poista loput kunnes tulee pilkku".
2) Palatakseni tuohon rivin viimeiseen lukuun 1. Sain sen vielä eilen poistettua komennolla:
Koodi: Valitse kaikki
awk '{$4 = ""; print}' tiedosto1.txt > tiedosto2.txt
6101.93587955, 2199.79205609, 81.40916867, 1,
6095.95898438, 2200.40478516, 81.34080505, 1,
6100.87402344, 2207.15954590, 81.26097107, 1
Nyt tältä:
6101.93587955, 2199.79205609, 81.40916867, 2200.40478516, 81.34080505, 1,
6100.87402344, 2207.15954590, 81.26097107, 1
Ja lisää ongelmia...
Lähtötiedostossa on myös tyhjiä rivejä. Enää ei toimi myöskään niiden poisto komennolla:
Koodi: Valitse kaikki
awk 'NF > 0' tiedosto1.txt > tiedosto2.txt
Koodi: Valitse kaikki
sed 's/.....$//' tiedosto1.txt > tiedosto2.txt
Voiko Päätteessä olla joku yleissäätö, joka vaikuttaa siten, että komennot tehdään vain kerran? Olen copy-pastennut komentoja tai selannut niitä Päätteen komentohistoriasta. Mutta eivät toimi.
Kiitos kaikesta avusta!