Vai al contenuto

Release 6.9 di Miller

Rilasciata una nuova versione di Miller con il supporto alla compressione ZSTD, una gestione migliore degli errori, il supporto ai nanosecondi nel timestamp e tanto altro.

Grazie infinite John

Il grande John Kerl è l'autore di Miller, uno strumento che ha cambiato in meglio la mia vita lavorativa, facendomi imparare tanto e stimolandomi sempre ad approfondire temi vecchi e nuovi. Grazie, grazie, grazie!

Miller è lo strumento che ha ispirato di più la creazione di questo spazio e per la quale c'è una sezione dedicata, ancora però in costruzione.
Il 31 agosto 2023, è stata pubblicata la release 6.9 di Miller.

A seguire alcune delle novità

Timestamp

Per i timestamp sono state introdotte numerose funzioni DSL per gestire i nanosecondi come numero intero a partire dalla data epoch: gmt2nsec, localtime2nsec, nsec2gmt, nsec2gmtdate, nsec2localdate, nsec2localtime, strfntime, strfntime_local, strpntime, strpntime_local, sysntime e upntime.

Funzioni statistiche

Sono state introdotte le singole funzioni statistiche, prima presenti soltanto nel verbo stats: ora possono essere usate su array e map.

Verbi per "trova e sostituisci"

Aggiunti i nuovi verbi sub, gsub e ssub, per applicare comandi di trova e sostituisci, in modo molto più diretto e comodo della vecchia modalità via verbo put. Sono supportate le espressioni regolari.

Se ad esempio ho questa tabella di input:

nome dataNascita altezza peso
andy 1973-05-08 176 86.5
chiara 1993-12-13 162 58.3
guido 2001-01-22 196 90.4

E voglio sostituire 1973 con 2021 nella colonna dataNascita, si può lanciare questo comando:

mlr --csv sub -f dataNascita 1973 2021 input.csv

Ed ottenere:

nome dataNascita altezza peso
andy 2021-05-08 176 86.5
chiara 1993-12-13 162 58.3
guido 2001-01-22 196 90.4

In qualche modo correlata è l'introduzione della funzione contains, che restituisce true, se il primo argomento contiene il secondo.

Supporto nativo alla compressione ZSTD

La compressione ZSTD è ideata per essere efficiente sia in termini di velocità che di rapporto di compressione.
Ne ho scritto da poco nel post "Gestire file CSV grandi, brutti e cattivi".

Con la release 6.9 di Miller si potrà operare direttamente su file compresso in questa modalità, senza decomprimerlo. Ad esempio potrò leggere le prime 10 righe con:

mlr --csv --ifs ";" head input.csv.zst

Di questa novità sono un po' orgoglioso, perché deriva da una mia proposta, nata proprio mentre scrivevo il suddetto articolo. Prima c'era il supporto per GZIP, BZIP2 e ZLIB.