Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: jarmala - 26.10.22 - klo:12.56

Otsikko: CSV-datatiedoston muunto
Kirjoitti: jarmala - 26.10.22 - klo:12.56
Ilmatieteen laitokselta voi imuttaa haluamansa tyyppisen kokelman mittaustuloksia. Kiinnosti lämpötila ja tuuli. Tulee seuraavanlainen csv-tiedosto:

Koodia: [Valitse]
2021,1,1,12:00:00 ap.,"UTC","-0,6","2,8"
2021,1,1,01:00:00 ap.,"UTC","-0,9","3,8"
2021,1,1,02:00:00 ap.,"UTC","-1,3","3,7"
2021,1,1,03:00:00 ap.,"UTC","-1,6",3
2021,1,1,04:00:00 ap.,"UTC","-1,6","3,6"
2021,1,1,05:00:00 ap.,"UTC","-1,9","3,8"
2021,1,1,06:00:00 ap.,"UTC","-1,9","3,7"

Tarkoitus olisi usuttaa gnuplot tuon kimppuun, mutta kun siinä on sekä erotinmerkki pilkku ja myös desimaali on pilkku. Miten vaihdan erotinpilkut tabeiksi ilman että desimaalipilkut muuttuvat myös? tr vaihtaa ne molemmat, mutta sediä tai awkia en osaa. Keinoni eivät ihan riitä. Ja noita rivejä on paljon eli jokin suodatin siihen pitäisi rakentaa... Pitääkö ruveta opettelemaan awkia? Vai sediä?

 
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: AimoE - 26.10.22 - klo:13.01
LibreOffice Calc pystyy lukemaan nuo oikein. Osaiskohan se sylkäistä ulos eri erottimen?
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: Snufkin - 26.10.22 - klo:13.24
Python-kurssi tarjosi tällaista vaihtoehtoa. Tuo csv-reader osaa erottaa kuuluuko erotinmerkki dataan tai ei.

Koodia: [Valitse]
import csv

with open("testi.csv") as tiedosto:
    for rivi in csv.reader(tiedosto, delimiter=";"):
        print(rivi)

https://ohjelmointi-22.mooc.fi/osa-7/4-datan-kasittely
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: kuutio - 26.10.22 - klo:13.39
Onnistuu myös vaikka csvtool:lla (asennettavissa repoista)
Koodia: [Valitse]
csvtool -t COMMA -u TAB cat muokattava_tiedosto -o muokattu_tiedostotulos:
Koodia: [Valitse]
2021    1       1       12:00:00 ap.    UTC     -0,6    2,8
2021    1       1       01:00:00 ap.    UTC     -0,9    3,8
2021    1       1       02:00:00 ap.    UTC     -1,3    3,7
2021    1       1       03:00:00 ap.    UTC     -1,6    3
2021    1       1       04:00:00 ap.    UTC     -1,6    3,6
2021    1       1       05:00:00 ap.    UTC     -1,9    3,8
2021    1       1       06:00:00 ap.    UTC     -1,9    3,7
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: jarmala - 27.10.22 - klo:00.22
Onnistuu myös vaikka csvtool:lla (asennettavissa repoista)
Koodia: [Valitse]
csvtool -t COMMA -u TAB cat muokattava_tiedosto -o muokattu_tiedosto

Hienoa! Pitääkin kokeilla heti...
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: ilkant - 31.10.22 - klo:01.52
Jotenkin muistui takavuosilta *nixin komento awk. Linux antoi mawk:n manuaalin, josta kopioin kaksi alkuosaa:

Koodia: [Valitse]
NAME
       mawk - pattern scanning and text processing language

SYNOPSIS
       mawk [-W option] [-F value] [-v var=value] [--] 'program text' [file ...]
       mawk [-W option] [-F value] [-v var=value] [-f program-file] [--] [file ...]
Otsikko: Vs: CSV-datatiedoston muunto
Kirjoitti: kuutio - 01.11.22 - klo:09.21
Jotenkin muistui takavuosilta *nixin komento awk. Linux antoi mawk:n manuaalin, josta kopioin kaksi alkuosaa:
Onnistuu toki myös awk:lla (ja senkin käyttö kannattaa ilman muuta opetella), mutta dedikoiduilla työkaluilla ei tarvitse keksiä pyörää uudestaan.

csvtool (muitakin vastaavia löytyy) on ihan näppärä monitoimityökalu csv-tiedostojen käsittelyyn, eikä tarvitse joka kerta miettiä, mitenhän tän nyt tekisi (esim. awkilla)