Concatenare campi con Miller

Come concatenare campi usando la riga di comando e Miller.

A cura di Totò Fiandaca  | issue #144 | guida/e Andrea Borruso


Caso d’uso

Dato un file CSV con molti campi, concatenare (field1+field2+filed3 …) alcuni campi in modo da ottenere un unico campo e snellire il file stesso.

file di input.txt

id field1 filed2 tag:0
1 A B C
2 a b c

usando Miller e il verbo put:

mlr --csv put -S '$nuovoCampo=$field1."-".$field1."-".${tag:0}' input.txt >output.csv
  • S per trattare i campi come campi di testo;
  • . è il classico operatore per concatenare;
  • i nomi di campo sono tra graffe, perché qui contengono caratteri speciali (i :)

output:

id field1 filed2 tag:0 nuovoCampo
1 A B C A-B-C
2 a b c a-b-c

per eliminare i campi non più utili, usare il verbo cut:

mlr --csv cut -f field1,filed2,tag:0 output.csv >output2.csv

Riferimenti utili

Chi ha cucinato questa ricetta o ne ha tratto ispirazione

Ultima modifica 12/02/2023: update link Miller (fac1a84)