Ci sono molte utilità disponibili nei sistemi Linux e Unix che consentono di elaborare e filtrare i file di testo. cut
è unutilità della riga di comando che consente di tagliare parti di righe da file specificati o dati reindirizzati e stampare il risultato sullo standard output. Può essere utilizzato per tagliare parti di una riga in base a delimitatore, posizione del byte e carattere.
In questo articolo, ti mostreremo come utilizzare cut
comando attraverso esempi pratici e spiegazioni dettagliate delle opzioni più comuni.
Come utilizzare il comando cut #
La sintassi per cut
il comando è il seguente:
Le opzioni che dicono a cut
se utilizzare un delimitatore, una posizione di byte o un carattere quando si ritagliano porzioni selezionate le righe sono le seguenti:
È possibile utilizzare una e solo una delle opzioni elencate sopra.
Altre opzioni sono :
-
-d
(--delimiter
) – Specifica un delimitatore che verrà utilizzato al posto del valore predefinito ” Delimitatore TAB “. -
--complement
– Completa la selezione. Quando si utilizza questa opzione,cut
visualizza tutti i byte, i caratteri, o campi eccetto se lected. -
-s
(--only-delimited
) – Per impostazione predefinitacut
stampa le righe che non contengono caratteri delimitatori. Quando viene utilizzata questa opzione,cut
non stampa le righe che non contengono delimitatori. -
--output-delimiter
– Il comportamento predefinito dicut
consiste nellutilizzare il delimitatore di input come delimitatore di output. Questa opzione consente di specificare una diversa stringa delimitatore di output.
Il comando cut
può accettare zero o più nomi di FILE di input. Se non viene specificato alcun FILE
o quando FILE
è -
, cut
leggerà dallo standard input.
Largomento LIST
passato al -f
, le opzioni -b
e -c
possono essere un numero intero, più numeri interi separati da virgole, un intervallo di numeri interi o più intervalli di numeri interi separati da virgole . Ogni intervallo può essere uno dei seguenti:
-
N
lennesimo campo, byte o carattere, a partire da 1. -
N-
dallennesimo campo, byte o carattere, alla fine della riga. -
N-M
dallennesimo al Mesimo campo, byte o carattere. -
-M
dal primo al Mesimo campo, byte o carattere.
Come tagliare per campo n.
Per specificare i campi da tagliare, invoca il comando con lopzione -f
. Quando non specificato, il delimitatore predefinito è “TAB”.
Negli esempi seguenti, useremo il seguente file. I campi sono separati da tabulazioni.
Ad esempio, per visualizzare il primo e il terzo campo dovresti utilizzare:
Oppure, se desideri visualizzare dal 1 ° al 4 ° campo:
Come tagliare in base a un delimitatore #
Per tagliare in base a un delimitatore, richiama il comando con -d
, seguita dal delimitatore che desideri utilizzare.
Ad esempio, per visualizzare il primo e il terzo campo utilizzando “:” come delimitatore, devi digitare:
Puoi utilizzare qualsiasi carattere singolo come delimitatore. Nellesempio seguente, utilizziamo il carattere spazio come delimitatore e stampiamo il secondo campo:
Come completare la selezione #
Per completare lelenco dei campi di selezione, utilizzare lopzione --complement
. Questo stamperà solo quei campi che non sono selezionati con lopzione -f
.
Il seguente comando stamperà tutti i campi tranne il 1 ° e il 3 °:
Come specificare un delimitatore di output #
Per specificare il delimitatore di output usa --output-delimiter
opzione. Ad esempio, per impostare il delimitatore di output su _
dovresti utilizzare:
Come tagliare byte e caratteri #
Prima di andare oltre, facciamo una distinzione tra byte e caratteri.
Un byte è 8 bit e può rappresentare 256 valori diversi. Quando è stato stabilito lo standard ASCII, ha preso in considerazione tutte le lettere, i numeri e i simboli necessari per lavorare con linglese. La tabella dei caratteri ASCII ha 128 caratteri e ogni carattere è rappresentato da un byte.Quando i computer hanno iniziato a diventare accessibili a livello globale, le aziende tecnologiche hanno iniziato a introdurre nuove codifiche dei caratteri per diverse lingue. Per le lingue che hanno più di 256 caratteri, una semplice mappatura 1 a 1 non era possibile. Ciò porta a diversi problemi come la condivisione di documenti o la navigazione in siti Web, ed era necessario un nuovo standard Unicode in grado di gestire la maggior parte dei sistemi di scrittura del mondo. UTF-8 è stato creato per risolvere questi problemi. In UTF-8, non tutti i caratteri sono rappresentati con 1 byte. I caratteri possono essere rappresentati da 1 byte a 4 byte.
Lopzione -b
(--bytes
) indica al comando di taglia sezioni da ogni riga specificata da date posizioni di byte.
Negli esempi seguenti, stiamo usando il carattere ü
che richiede 2 byte.
Seleziona il 5 ° byte:
Seleziona il 5 °, 9 ° e 13 ° byte:
Seleziona lintervallo dal 1 ° al 5 ° byte:
Al momento della scrittura di questo articolo, la versione di cut
in bundle in GNU coreutils non ha unopzione per tagliare dai personaggi. Quando si utilizza lopzione -c
, cut
si comporta come quando si utilizza lopzione -b
.
Taglia esempi #
Il comando cut
viene solitamente utilizzato in combinazione con altri comandi tramite piping. Ecco alcuni esempi:
Ottieni un elenco di tutti gli utenti #
Loutput del comando getent passwd
viene passato a cut
, che stampa il primo campo utilizzando :
come delimitatore.
Loutput mostra un elenco di tutti gli utenti di sistema.
Visualizza i 10 comandi utilizzati più di frequente #
Nellesempio seguente, viene utilizzato cut
per rimuovere i primi 8 byte da ciascuna riga delloutput del comando history
.
Conclusione #
cut
viene utilizzato per visualizzare i campi selezionati da ogni riga di un dato file o dallo standard input.
Sebbene molto utile, cut
ha alcune limitazioni. Non supporta la specifica di più di un carattere come delimitatore e non supporta più delimitatori.