Kuinka tämä lajittelu tehdään

Tässä on ote tiedostosta jossa on päiväys ja sen perässä numerosarja. Kuten huomaat siinä on sama päiväys useammin peräkkäin. Miten tuo pitäisi lajitella että saataisiin poimittua vain viimeisen päiväyksen numerosarja.

09.05.2020 447393
09.05.2020 447403
10.05.2020 464963
10.05.2020 464718
10.05.2020 461976
10.05.2020 461972
10.05.2020 462037
11.05.2020 503879
11.05.2020 503873
11.05.2020 503864
11.05.2020 503980

Eli tuosta esimerkistä oikein suoritettu poiminta tuottaisi tällaisen tuloksen. Tiedosto, josta tämä esimerkki on otettu, on iso, ja alati muuttuva, eli poimintaa ei voi kuvitella tekevänsä käsin, siihen täytyy löytyä jonkin sortin komento sarja.

09.05.2020 447403
10.05.2020 462037
11.05.2020 503980
11<50
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Ihanan hassu kysymys! Näen sieluni silmin numeroita ja kirjaimia lillumassa jossain pilvimäisen tuntemattomassa paikassa ja jonkun ihmisen yrittävän sinnikkäästi järjestää näkemäänsä uudelleen. Ehkä tämä on jostain Alice in Wonderland -sadusta irti repäisty :D

Äänestä
  • Kylläpä numerojen näkeminen inspiroi ihmisiä monella tavalla.

    Äänestä

Blondin kysymyshän tuo on selvästi.

"ote tiedostosta jossa on päiväys ja sen perässä numerosarja"

Varmaan jossain Prismassa on tuollaisia "tiedostoja" poistotarjouksessa ja tyttöparka on ostanut vahingossa yhden ihan omaan käyttöön.

Äänestä

USAn koronatartuntojen päityslista, josta pitäisi aina poimia se päivän viimmeinen määrä.

Äänestä
  • Kyllä tuo on kiinan julkaisema lista, kun on aamupäivän tilastossa sairastuneita enemmän kuin on iltaa kohti mennessä.

    Äänestä

Silmukassa kelataan listaa eteenpäin kunnes päivämäärä vaihtuu ja otetaan taulukkoon talteen määrä.

Äänestä
  • Taitaa kaikki selvännäkijät ja langattomasti toisten ajatuksia lukevat suomi24-tukihenkilöt olla lomilla. Ehkä vielä joku päivä kysyjä paljastaa vaikka vahingossa muutakin kuin otteen tästä mysteeritiedoston numerojoukosta ;-)

    Äänestä

Sovitaan että data on tiedostossa nimeltään "lista.txt".
Tuossa onelineri, joka toimii ainakin bashissa:

for uniikkipaiva in `awk '{print $1}' lista.txt | uniq`; do grep $uniikkipaiva lista.txt | tail -1; done

Ideana siis ensin suodattaa pelkät yksittäiset päivämäärät ensimmäisestä sarakkeesta. Sitten kelataan kyseisten päivämäärien viimeiset rivit ja näytetään ne.

~$ cat lista.txt
09.05.2020 447393
09.05.2020 447403
10.05.2020 464963
10.05.2020 464718
10.05.2020 461976
10.05.2020 461972
10.05.2020 462037
11.05.2020 503879
11.05.2020 503873
11.05.2020 503864
11.05.2020 503980
~$ for uniikkipaiva in `awk '{print $1}' lista.txt | uniq`; do grep $uniikkipaiva lista.txt | tail -1; done
09.05.2020 447403
10.05.2020 462037
11.05.2020 503980

Äänestä
  • Lyhyestä virsi kaunis, tämä toimii ja tämän minä otan, olet nero, KIITOS.

    Äänestä

  • Anonyymi kirjoitti:

    Lyhyestä virsi kaunis, tämä toimii ja tämän minä otan, olet nero, KIITOS.

    Kyllähän tuo hatun noston arvoinen suoritus oli, mutta tämäkin olisi toiminut, ja tarpeita on useampaankin virteen, jostakin syystä nämä minun tekeleet venyy ja venyy mutta toimii siitä huolimatta.

    x=""
    y=""
    while read line; do
    x=${line:0:10}
    if [ "$y" != "" ]
    then
    if [ "$x" != "$y" ]
    then
    echo $oldline
    fi
    fi
    oldline=$line
    y=$x
    done < xx.txt

    Kuvakaappauksenkin otin kun rivejä kertyi tuokin verran: https://s6.gifyu.com/images/Valinta_061.png

    Äänestä

  • Anonyymi kirjoitti:

    Lyhyestä virsi kaunis, tämä toimii ja tämän minä otan, olet nero, KIITOS.

    Kaukana nerosta, tuo on pelkkää loogista päättelyä.

    Jos haluaa vielä järjestää kakkossarakkeen mukaan suurimman luvun viimeiseksi kyseiselle päivälle, niin tarvitsee yhden sort-komennon lisää.

    for uniikkipaiva in `awk '{print $1}' lista.txt | uniq`; do sort -n -k2 lista.txt | grep $uniikkipaiva | tail -1; done

    Äänestä

Kommentoi aloitusta


Anonyymi kirjoitti:

Tässä on ote tiedostosta jossa on päiväys ja sen perässä numerosarja. Kuten huomaat siinä on sama päiväys useammin peräkkäin. Miten tuo pitäisi lajitella että saataisiin poimittua vain viimeisen päiväyksen numerosarja.

09.05.2020 447393
09.05.2020 447403
10.05.2020 464963
10.05.2020 464718
10.05.2020 461976
10.05.2020 461972
10.05.2020 462037
11.05.2020 503879
11.05.2020 503873
11.05.2020 503864
11.05.2020 503980

Eli tuosta esimerkistä oikein suoritettu poiminta tuottaisi tällaisen tuloksen. Tiedosto, josta tämä esimerkki on otettu, on iso, ja alati muuttuva, eli poimintaa ei voi kuvitella tekevänsä käsin, siihen täytyy löytyä jonkin sortin komento sarja.

09.05.2020 447403
10.05.2020 462037
11.05.2020 503980

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu