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
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
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
Kylläpä numerojen näkeminen inspiroi ihmisiä monella tavalla.
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.
USAn koronatartuntojen päityslista, josta pitäisi aina poimia se päivän viimmeinen määrä.
Kyllä tuo on kiinan julkaisema lista, kun on aamupäivän tilastossa sairastuneita enemmän kuin on iltaa kohti mennessä.
Silmukassa kelataan listaa eteenpäin kunnes päivämäärä vaihtuu ja otetaan taulukkoon talteen määrä.
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 ;-)
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
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
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