LINUX: Comando cut

()

cut (dalla lingua inglese cut, taglia) è un comando dei sistemi operativi Unix e Unix-like legge uno o più file di testo (o lo standard input) estraendo da ogni linea delle sezioni, definite in termini di byte oppure caratteri oppure campi, le quali sono poi mostrate sullo standard output.
È un tipo di filtro.

USO
La sintassi generale di cut prevede le tre forme che seguono:

cut -b lista [-n] [–] [file1 [file2 …] ]
cut -c lista [–] [file1 [file2 …] ]
cut -f lista [-d carattere] [-s] [–] [file1 [file2 …] ]
I parametri facoltativi file indicano i nomi dei file di testo da cui estrarre le informazioni. Se non sono specificati, i dati sono letti dallo standard input. Uno dei parametri può essere un trattino (“-“) per indicare di leggere in quel punto lo standard input.

Il doppio trattino — (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Tra le opzioni principali vi sono:

-b lista
Estrae dalla linea i byte i cui indici sono specificati dal parametro lista.
-c lista
Estrae dalla linea i caratteri i cui indici sono specificati dal parametro lista.
-f lista
Estrae dalla linea i campi i cui indici sono specificati dal parametro lista.
-d carattere
Se si estraggono campi tramite l’opzione -f, indica il carattere da usare come separatore tra i campi. Il carattere predefinito è il carattere di controllo tab.
-n
Se si estraggono byte tramite l’opzione -b e la codifica del testo in uso richiede più byte per carattere, assicura che le sequenze di byte che rappresentano il primo e/o l’ultimo carattere di una sezione siano estratte per intero.
-s
Se si estraggono campi tramite l’opzione -f, indica di escludere le linee che non contengono il carattere separatore (il comportamento predefinito di cut prevede di riproporre in output tali linee senza modifiche).
Il parametro lista delle opzioni -b, -c e -f è un elenco di uno o più indici e/o intervalli di indici, separato da virgole (“,”) o da spazi (” “), il quale seleziona all’interno delle linee di dati le sezioni da estrarre. Ciascun elemento dell’elenco può essere:

-un indice numerico, a partire da 1, che indica il byte, carattere o campo da selezionare;
-un intervallo di indici nella forma min-max (ad esempio “3-5”) che seleziona i byte, caratteri o campi compresi tra gli indici min e max;
-un intervallo di indici nella forma min- (ad esempio “3-“) che seleziona i byte, caratteri o campi a partire dall’indice min fino al termine della linea;
-un intervallo di indici nella forma -max (ad esempio “-5”) che seleziona i byte, caratteri o campi a partire dall’inizio della linea fino all’indice max;

L’ordine degli elementi nella lista non è rilevante, e nemmeno lo sono eventuali ripetizioni o intersezioni, in quanto le sezioni sono sempre presentate nell’ordine in cui appaiono nelle linee di dati originarie e senza ripetizioni.

ESEMPI
Estrae il primo ed il sesto campo dal file /etc/passwd, che usa il carattere : come separatore di campo:

cut -f 1,6 -d : /etc/passwd
Estrae i primi dieci caratteri da ogni linea che giunge dallo standard input:

cut -c -10
Estrae i byte che vanno dal quinto al decimo, il sedicesimo e dal ventesimo in poi di ogni linea del file prova.txt:

cut -b 5-10,16,20- prova.txt

NOTE
Le capacità di estrazione di cut sono alquanto ridotte, il che limita il suo utilizzo ai casi più semplici; esso infatti:

-non permette di riordinare e/o ripetere le sezioni estratte
-non permette di estrarre solo parte dei dati delle sezioni indicate
-non permette di specificare come separatore dei campi una sequenza di spazi (non è ad esempio adatto a estrarre dati dall’output del comando ls).

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?