Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: 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:
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ä?
-
LibreOffice Calc pystyy lukemaan nuo oikein. Osaiskohan se sylkäistä ulos eri erottimen?
-
Python-kurssi tarjosi tällaista vaihtoehtoa. Tuo csv-reader osaa erottaa kuuluuko erotinmerkki dataan tai ei.
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
-
Onnistuu myös vaikka csvtool:lla (asennettavissa repoista)
csvtool -t COMMA -u TAB cat muokattava_tiedosto -o muokattu_tiedosto
tulos:
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
-
Onnistuu myös vaikka csvtool:lla (asennettavissa repoista)
csvtool -t COMMA -u TAB cat muokattava_tiedosto -o muokattu_tiedosto
Hienoa! Pitääkin kokeilla heti...
-
Jotenkin muistui takavuosilta *nixin komento awk. Linux antoi mawk:n manuaalin, josta kopioin kaksi alkuosaa:
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 ...]
-
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)