Feb 172011
 

tux-terminalTra 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:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*