Pieni bash haaste liittyen covid-kuolemiin

Anonyymi

Viikonloppu tulossa, niin kaikilla joutavilla on aikaa.

Covid-kuolemat löytyvät csv-muodossa githubin osoitteesta:
https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv

Se on tällä hetkellä noin 600 kilotavua pitkä. Ensimmäisellä rivillä on viidennestä sarakkeesta alkaen päivämäärät (ensimmäinen 22. tammikuuta 2020).

Riveillä on sitten maatiedot ja päivämäärien kohdalla ko. päivän kohdalle rekisteröidyt kuolemat pandemian alusta alkaen kyseisessä maassa.

Tehtäisiin bash-skripti, joka palauttaa halutun maan kohdalta n-määrän lukuarvoja annetusta päivämäärästä taaksepäin. Jos päivämäärää ei anneta, niin käytetään kuluvaa päivää. Jos määrää ei anneta, haetaan viimeinen.

Syntaksi olisi:
kuolemat.sh Finland 7 10/1/21

Joka palauttaisi 7 päivän arvot päivästä 1.10.2021 taakse päin. Voi käyttää siis tuota päivämäärämuotoilua mikä on csv-tiedostossakin, mutta plussapisteitä saa, jos voi käyttää suomalaista muotoa.

Tulosteeksi päivämäärä ja lukuarvo per rivi:
9/25/21 1066
9/26/21 1069
9/27/21 1069
9/28/21 1072
9/29/21 1072
9/30/21 1079
10/1/21 1078

Plussaa saa "cachettamisesta", eli ettei csv-taulukkoa käydä kuin kerran ja se tallennetaan paikalliselle levylle. Haettaisiin uudelleen vasta kuin vanha on poistettu. Etenkin testausvaiheessa tuolla saadaan vähennettyä turhaa palvelimen kuormitusta.

Taulukon saa haettua esimerkiksi wget-komonnolla.

18

212

    Vastaukset 18

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      #! /usr/bin/bash
      timeline=`cat time_series_covid19_deaths_global.csv | grep Prov`; echo $timeline | tr ',' '\n' > f2; DATA=`cat time_series_covid19_deaths_global.csv | grep $1`; echo $DATA | tr ',' '\n' >f1; paste f1 f2 | grep $3 -B $2
      Kelpaako tämä?

      • Anonyymi

        Näppärän yksinkertainen toteutus, antaa tosin yhden päivän liikaa. Paste-komento on itselleni uusi tuttavuus.

        Itse aloin virittelemään vähän monimutkaisempaa, jossa saisi nuo päivämäärät samalla Suomi-muotoon.


      • Anonyymi
        Anonyymi kirjoitti:

        Näppärän yksinkertainen toteutus, antaa tosin yhden päivän liikaa. Paste-komento on itselleni uusi tuttavuus.

        Itse aloin virittelemään vähän monimutkaisempaa, jossa saisi nuo päivämäärät samalla Suomi-muotoon.

        No, joku -B $(expr $2 - 1) voisi toimia. Onnea yritykselle!


    • Anonyymi

      Kannattaisi silti mennä rokotettavaksi ettei kuormittaisi sairaalalaitosta.
      Suurin osa sairaaloissa olevista on nyt rokottamattomia.

      • Anonyymi

        Ei pidä ottaa mitään elimistöön kuulumattomia myrkkyjä itseensä, ellei ole sitten hautomassa itsemurhaa. Sairaalassa on jo pian 1/3 rokotettuja, ja määrä kasvaa koko ajan. Rokote on täysin turha, ja jopa vaarallinen terveille ihmisille. Vanhukset kuolevat muutenkin.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei pidä ottaa mitään elimistöön kuulumattomia myrkkyjä itseensä, ellei ole sitten hautomassa itsemurhaa. Sairaalassa on jo pian 1/3 rokotettuja, ja määrä kasvaa koko ajan. Rokote on täysin turha, ja jopa vaarallinen terveille ihmisille. Vanhukset kuolevat muutenkin.

        Valheidentorjunta laajenee!
        "Kyseessä on Googlen toinen valeinformaatioon liittyvä toimenpide lyhyen ajan sisällä. Viime viikolla yhtiö kielsi rokotuksiin liittyvien valheiden levittämisen alustoillaan."


      • Anonyymi
        Anonyymi kirjoitti:

        Valheidentorjunta laajenee!
        "Kyseessä on Googlen toinen valeinformaatioon liittyvä toimenpide lyhyen ajan sisällä. Viime viikolla yhtiö kielsi rokotuksiin liittyvien valheiden levittämisen alustoillaan."

        No, sairastuin koronaan samana päivänä kuin sain toisen rokote-annoksen. Lääkäri oli sitä mieltä, että kaikki tämän tulevat vielä sairastamaan. Jos 2 rokoteannosta saanut niin suoja on 90% vakavalta tautimuunnokselta: Tarkoittaa, että sairaalaan joutuu 1 ihminen, joka on saanut kaksi rokotetta jokaista 9 rokottamatonta kohti. Nyt jos 70% vakavasti sairastuneista on rokottamattomia, voi tästä päätellä, että sairaus todellakin leviää rokotettujen keskuudessa - mutta ei aiheuta haittaa. Nopeus on lähes 3x verrattuna siihen, mitä rokottamattomat sairastuvat. Onko 2x rokotetut jotenkin varomattomampia nykyään ja käyvät esim. yleisötapahtumissa? Voit itse laskea tarkemmat lukuarvot, kaikki tieto on saatavilla! 2x rokottaminen ei pelasta kaikkia vaikealta tautimuodolta, vaan on 90% tehokas verrattuna rokottamattomiin!
        Täytyy kyllä sanoa, että oireet olivat silti sitä luokkaa, että en tohdi miettiä, miten olisi käynyt ilman rokotuksia..


      • Anonyymi
        Anonyymi kirjoitti:

        No, sairastuin koronaan samana päivänä kuin sain toisen rokote-annoksen. Lääkäri oli sitä mieltä, että kaikki tämän tulevat vielä sairastamaan. Jos 2 rokoteannosta saanut niin suoja on 90% vakavalta tautimuunnokselta: Tarkoittaa, että sairaalaan joutuu 1 ihminen, joka on saanut kaksi rokotetta jokaista 9 rokottamatonta kohti. Nyt jos 70% vakavasti sairastuneista on rokottamattomia, voi tästä päätellä, että sairaus todellakin leviää rokotettujen keskuudessa - mutta ei aiheuta haittaa. Nopeus on lähes 3x verrattuna siihen, mitä rokottamattomat sairastuvat. Onko 2x rokotetut jotenkin varomattomampia nykyään ja käyvät esim. yleisötapahtumissa? Voit itse laskea tarkemmat lukuarvot, kaikki tieto on saatavilla! 2x rokottaminen ei pelasta kaikkia vaikealta tautimuodolta, vaan on 90% tehokas verrattuna rokottamattomiin!
        Täytyy kyllä sanoa, että oireet olivat silti sitä luokkaa, että en tohdi miettiä, miten olisi käynyt ilman rokotuksia..

        Minä en ole sairastunut, en ennen rokotuksia enkä niiden jälkeen. Johtuu varmaan siitä etten hengaile rokottamattomien kanssa ( enkä kauheasti muutenkaan ).


    • Anonyymi

      Minkäkin kiinnostuin tekemään tuota, kesken on vielä, mutta rivejä on jo 165. Lisäsin kyvyn ottaa vastaan päiväyksen paikallisella aikaformaatilla ja suomenkielisenä nuo maat. Eli on ihan sama ruokitko ohjelmaan:

      Finland 7 1/22/21
      Sweden 7 1/22/21
      vai
      Suomi 7 22.1.21
      Ruotsi 7 22.1.21

      • Anonyymi

        Minulla on tarkoitus tehdä sellainen versio, joka tulostaa syötteen siinä muodossa, missä on annettu päivämääräkin. Eli joko jenkkityyliin, tai sitten tuolla suomalaisella tavalla. Lisäksi csv-data käydään hakemassa vain, jos tiedostoa ei ole, tai haettu päivämäärä on uudempi kuin tiedoston luomisen päivämäärä paikallisella koneella.

        Vähän aikaa menee vielä. Nyt olen lukenut päivämäärärivin ja maarivin ja splitannut ne taulukoksi (array). Seuraavaksi pitää hakea päivämääristä oikea indeksi, jonka perusteella sitten tulostukset.

        Teitkö muuten maiden nimen käännökset kiinteästi skriptiin, vai noudatko ne esimerkiksi jostain nettipalvelusta?


      • Anonyymi
        Anonyymi kirjoitti:

        Minulla on tarkoitus tehdä sellainen versio, joka tulostaa syötteen siinä muodossa, missä on annettu päivämääräkin. Eli joko jenkkityyliin, tai sitten tuolla suomalaisella tavalla. Lisäksi csv-data käydään hakemassa vain, jos tiedostoa ei ole, tai haettu päivämäärä on uudempi kuin tiedoston luomisen päivämäärä paikallisella koneella.

        Vähän aikaa menee vielä. Nyt olen lukenut päivämäärärivin ja maarivin ja splitannut ne taulukoksi (array). Seuraavaksi pitää hakea päivämääristä oikea indeksi, jonka perusteella sitten tulostukset.

        Teitkö muuten maiden nimen käännökset kiinteästi skriptiin, vai noudatko ne esimerkiksi jostain nettipalvelusta?

        Kääntäjällä tuotin emaat.txt ja smaat.txt. Ihan hyvä ajatus, noudattaa syötteen mukaista palautetta ohjelmassa, voi olla että matkin ideaa siltäkin osin. Hyvää harjoitusta tällainen, joutuu vähän useamman komennon kanssa painiskelemaan, tai no, ei tuossa noita hyvinkään montaa käskyä käytetä, paljolti rakentuu; "If then else fi" vertailulausekkeen varaan.


    • Anonyymi

      Ensimmäinen versio nyt jossain mallissa. Virheiden käsittely ei ole kovinkaan hyvällä tolalla.

      Koodi pastebinissä: https://pastebin.com/39rhYqtr

      $ ./kuolemat.sh Finland
      Ei hakuehdot täyttäviä tuloksia (päivä: 10/9/21, päiviä: 1)
      $ ./kuolemat.sh Finland 2
      10/8/21 1096
      $ ./kuolemat.sh Finland 3 8.10.2021
      6.10.2021 1089
      7.10.2021 1092
      8.10.2021 1096
      $ ./kuolemat.sh Sweden 3 1.1.2021
      30.12.2020 8727
      31.12.2020 8727
      1.1.2021 8727
      $ ./kuolemat.sh India 2 1/1/2021
      12/31/20 148994
      1/1/21 149474

      • Anonyymi

        Hienosti rakennettu, ja toimii.


      • Anonyymi
        Anonyymi kirjoitti:

        Hienosti rakennettu, ja toimii.

        Vähän rumaa on koodi, kun samalla tuli opeteltua bashia kantapään kautta.

        Yritin vältellä "C-tyyppisen" for-silmukan käyttöä kahden muuttujan määrittelemien arvojen välillä, vaan seq-komento tuntui heittävän rivinvaihdon luupin indeksien perään, joten ei toiminut indekseinä ne sellaisenaan.

        Ohjeistuksissa usein varoitetaan, ettei joku tapa toimi välttämättä kuin vasta tietyllä bash-versiolla, ja sen vuoksi yritän olla varovainen mitä tapaa käytän.

        Pythonillahan nämä kannattaisi tietenkin tehdä, mutta mukavaa vaihtelua kikkailla eri tavallakin.


      • Anonyymi
        Anonyymi kirjoitti:

        Vähän rumaa on koodi, kun samalla tuli opeteltua bashia kantapään kautta.

        Yritin vältellä "C-tyyppisen" for-silmukan käyttöä kahden muuttujan määrittelemien arvojen välillä, vaan seq-komento tuntui heittävän rivinvaihdon luupin indeksien perään, joten ei toiminut indekseinä ne sellaisenaan.

        Ohjeistuksissa usein varoitetaan, ettei joku tapa toimi välttämättä kuin vasta tietyllä bash-versiolla, ja sen vuoksi yritän olla varovainen mitä tapaa käytän.

        Pythonillahan nämä kannattaisi tietenkin tehdä, mutta mukavaa vaihtelua kikkailla eri tavallakin.

        Huomasitko että *.csv tiedostolle oli asetettu vanhentumisaika (expires time), minä sidoin tuon uuden noutamisen tuohon aikaan. Joten se haetaan aina kun ohjelmaa ajettaessa paikallinen aika ylittää vanhentumisajan.

        Aika näyttää asettavan lataustarpeen 10 minuutin välein.


      • Anonyymi
        Anonyymi kirjoitti:

        Huomasitko että *.csv tiedostolle oli asetettu vanhentumisaika (expires time), minä sidoin tuon uuden noutamisen tuohon aikaan. Joten se haetaan aina kun ohjelmaa ajettaessa paikallinen aika ylittää vanhentumisajan.

        Aika näyttää asettavan lataustarpeen 10 minuutin välein.

        Laitoin pastebin.com sivustolle, tuon oman version tuosta uuden tiedoston lataus kontrollista. Mutta jaan täällä vain pyynnöstä, koska ei huvita kuulla miten se ei toimi tai muutakaan aiheetonta sättimistä sen vuoksi.

        Lisäksi tein noiden maiden nimistä taulukot, (MAAT_SUO_TO_ENG_ARRAY.sh) ja (MAAT_ENG_TO_SUO_ARRAY.sh) jotka ovat osa ohjelmaa ulkoisena tiedoston. Koska täällä on puhuttu hyvin vähän tai ei ollenkaan siitä miten ulkoista tiedostoa käytetään Bash Shell ohjelmissa, tein myös MAAT_SUO_TO_ENG_ARRAY_HELP.sh tiedoston joka sisältää 15 erilaista tapaa, hakea tietoa noista ulkoisista taulukoista.


      • Anonyymi
        Anonyymi kirjoitti:

        Vähän rumaa on koodi, kun samalla tuli opeteltua bashia kantapään kautta.

        Yritin vältellä "C-tyyppisen" for-silmukan käyttöä kahden muuttujan määrittelemien arvojen välillä, vaan seq-komento tuntui heittävän rivinvaihdon luupin indeksien perään, joten ei toiminut indekseinä ne sellaisenaan.

        Ohjeistuksissa usein varoitetaan, ettei joku tapa toimi välttämättä kuin vasta tietyllä bash-versiolla, ja sen vuoksi yritän olla varovainen mitä tapaa käytän.

        Pythonillahan nämä kannattaisi tietenkin tehdä, mutta mukavaa vaihtelua kikkailla eri tavallakin.

        Juu, bash on syntaksiltaan välillä vähän kökköä - vedän tässä rajan siihen, minkä pystyy komentoriviltä suunnilleen kivuttomasti kirjoittamaan - eli kelpuutan skripteihin yleensä myös kaikki komentorivityökalut. Ei ollut Pythonia keksittykään vielä kun skriptaus-kieltä opettelin ja tästä syystä Tcl on edelleenkin suosikki - sitähän pystyy ajamaan komentorivitulkkinakin tclsh:n avulla. Eikä viitsi vaihtaakaan enää, kun toiminta on nykyään ongelmatonta ja vakiintunutta. Ei ole yhtä oikeaa, tosin.


    • Anonyymi

      Noihan on taaloja! Hehehheeeeee,,,eeee,,,,e....buaaaa....

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Onko vassarin lääkkeet(mt) jääneet taas ottamatta

      Sen verran järjetöntä persuhuutoa taa näkyville. Tuo yksi häiriintynyt ei osaa kuin "huutaa" isoilla kirjaimilla, se on
      Maailman menoa
      47
      1502
    2. Olen nainen pahoillani, että tykkään sinusta niin paljon, että

      Haluaisin panna sua. Tuntuu vaan siltä, että olet sen suhteen ihan haluton. Ei minulle riitä pelkkä ystävyyssuhde.
      Ikävä
      64
      921
    3. Mieti oikeasti

      Ollaan lähes tuntemattomia, mutta samalla on tämä erityinen vuosien tilanne takana, joka on ollut monella tapaa väärin.
      Ikävä
      30
      667
    4. Taasko sä vedit

      Suojamoodin päälle? Miehelle
      Ikävä
      87
      647
    5. kene ajoi "kolarin"?

      "Punkaharjulla Luston ja Tuppuranmäen välillä sattui tiistaina aamupäivällä liikenneonnettomuus. Poliisin mukaan Savonl
      Savonlinna
      14
      605
    6. Tiedoksi yhdelle naiselle

      että mies lähestyy kaikin tavoin jos on kiinnostunut! 🙋🏻‍♂️
      Ikävä
      43
      583
    7. Pahin tapa satuttaa toista

      On jättää toinen vaille mitään vastausta. Erityisen kipeää se tekee sillon jos toinen ghostaa.
      Ikävä
      56
      574
    8. Liikenneonnettumuus

      Linkkari ja ruotsibiili törmäsivät linkku oli redun opetusajossa
      Ylitornio
      7
      552
    9. Puukotus Kajaanissa

      Kuka puukotti ja ketä? https://yle.fi/a/74-20247765 Vähemmän yllättäen päihteet mainittu
      Kajaani
      24
      541
    10. Minä kyllä odotan nainen

      että sinun kanssa voisin jutella asioista ihan oikeasti.
      Ikävä
      44
      531
    11. Mitä söpö

      Mies mietit?
      Ikävä
      61
      525
    12. Alkaa jotenkin nyt kuvio hahmottuu täällä

      Sellainen vaikutelma tästä alkaa tulla, että täällä on joku pieni porukka, joka tuntee toisensa tai ainakin pelaa samaan
      Ikävä
      70
      520
    13. Jos kaivattusi on

      Varattu niin miksi et antaisi asian olla hänen suhteen. Miksi ylipäätään vielä jatkat?
      Ikävä
      47
      513
    14. Miten uskallan sua nähdä

      Kun vaikutat suuttuneelta :(
      Ikävä
      37
      506
    15. Minulla on joskus ikävä sinua ja ajattelen sinua joskus.. edelleen

      Olin joskus niin rakastunut sinuun. Olin onnellinen, että kohdattiin ja kun vain tiesin sinun olevan olemassa. Täytit aj
      Ikävä
      14
      501
    16. Kylän tielle remonttia?

      Mitäköhän kylän tielle ruvetaan tekemään ku laitettu tuommoset töpsät muutamien suojateitten kohille?
      Hyrynsalmi
      13
      472
    17. Hyvä on sitten, jos et sitä s*ksiä halua kanssani.

      Rakastetaan vaan toisiamme, voin käydä muualla tyydyttämässä fyysisenpuolen tarpeet. Puhumalla tämäkin olisi selvinnyt.
      Ikävä
      132
      469
    18. 42
      428
    19. Nainen, tässä olen kahden vaiheilla

      Toinen pitäisi valita ja kummassakin on hyvät ja huonot puolensa. Toinen olisi sellainen pysyvä mutta työläs. Toinen taa
      Ikävä
      45
      419
    20. Miten vuosien jälkeenkin tunteet voivat olla niin voimakkaat?

      Että pelkkä ajatus sinusta täyttää silmät kyynelistä.
      Ikävä
      26
      409
    Aihe