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
- Changelog 3.14 : https://github.com/pigreco/changelog314
Ultima modifica 12/02/2023: update link Miller (fac1a84)