Asiaan palatakseni, olen unohtanut mainita
GNU Datamashin! En tosin tiedä, kuinka ”uusi” se on muille kuin minulle.
Datamashillä laskee nopeasti tekstitiedostoista (CSV-tiedostot mukaan lukien) erilaisia tilastollisia tunnuslukuja. Jos esimerkiksi on tämmöinen tekstitiedosto ”tuloksia.txt”:
Matti 10 10 10 11
Ville 20 21 22 23
Kalle 30 40 35 22
Pekka 20 30 10 5
Lasketaan kunkin sarakkeen summat:
$ datamash -W sum 2-5 < tuloksia.txt
80 101 77 61
Datamash sopii myös hupsuihin temppuihin. Tässä katsotaan /etc/group-tiedostosta käytetyt GIDit sadan numeron alueittain (0–99, 100–199, 200–299 jne.). Ensimmäinen sarake kertoo alueen aloittavan numeron, kaksi muuta pienimmän ja suurimman käytetyn. (400–499-alue tulee päinvastaiseen järjestykseen, koska openSUSE täyttää aluetta lopusta alkuun päin.)
$ datamash -st: bin:100 3 cut 3 < /etc/group | datamash -st: groupby 1 first 2 last 2
0:0:98
100:100:127
1000:1000:1000
1500:1500:1500
400:499:458
65500:65533:65534
Saman tekisi totta kai millä hyvänsä ohjelmointikielellä (sh, AWK, Python…), mutta Datamash on usein kätevin, jos valmiiksi tietää, mitä pitää tehdä.