Tra i comandi disponibili dal terminale linux c’e’ anche cut
molto utile per l’elaborazione di stringhe e caratteri in generale.
Il comando cut è uno dei più antichi comando Unix. Ciò significa che ha più di 40 anni. E si vede. E’ importante capire che questo è un comando Unix e si comporta in “modo Unix”, ad esempio, utilizza IFS (Input Field Separators – ingresso campo separatori) per stabilire come dividere i campi ed è possibile controllarlo con set | grep IFS
. È possibile inoltre impostarlo, per esempio, con:
IFS = "tn"
Il comando “cut” prende una fetta verticale di un file, stampa solo le colonne o i campi specificati. Le colonne sono selezionate utilizzando il IFS standard o un delimitatore di campi specificato.
Utilizzo base
cut OPTION [FILE]
Alcune delle opzioni più comuni sono:
-c, --characters=LIST Seleziona solo questi caratteri -d, --delimiter=DELIM usa DELIM invece che TAB come delimitatore dei campi -f, --fields=LIST seleziona solo questi campi; inoltre stampa qualsiasi riga che non contiene alcun carattere delimitatore, a meno che l'opzione -s sia specificata -s, --only-delimited non stampare le linee che non contengono delimitatori
Facciamo qualche esempio pratico.
Avendo il file test.txt che contiene
12345:Administration:james:smith 67891:Staff:stephan:york 18230:Staff:luke:cutwine 62913:Sales:red:blues
Stampare solo i caratteri da 1 a 5 di ogni linea:
>cut -c1-5 test.txt 12345 67891 18230 62913 |
Questo può essere utile quando abbiamo campi a larghezza fissa, ma se vogliamo invece stampare la terza colonna (utilizzando come separatore il carattere :), possiamo utilizzare
>cut -d: -f3 test.txt james stephan luke red |
Capita spesso che si voglia utilizzare lo spazio come delimitatore. Per farlo bisogna metterlo tra apici singoli, come: -d' '
.
Infine come ultimo esempio stampiamo il contenuto del file senza la colonna numero due, per far questo utilizzeremo l’opzione –complement che esclude la colonna indicata, quindi:
cut -d: -f2 --complement test.txt 12345:james:smith 67891:stephan:york 18230:luke:cutwine 62913:red:blues |
Per stampare (o escludere) più colonne bisogna elencarle separate da una virgola nell’opzione -f.
cut -d: -f2,4 test.txt Administration:smith Staff:york Staff:cutwine Sales:blues |
Popular Posts:
- None Found