Guida completa all’utilizzo del comando Linux Cut

Guida completa all’utilizzo del comando Linux Cut

Il comando cut in Linux è un’utilità essenziale per l’elaborazione del testo, progettata per estrarre segmenti specifici da ogni riga di un file o da un input in pipe. Questo comando non modifica il file originale, ma ne legge i dati e visualizza le porzioni desiderate nell’output standard. In questa guida, approfondiremo le funzionalità del comando cut in Linux e forniremo esempi pratici e concreti per dimostrarne l’utilizzo.

Esplorazione del comando cut

Il cutcomando è fondamentale per chiunque gestisca testo strutturato, facilitando l’efficace manipolazione ed estrazione dei dati in ambienti Unix-like. Estraendo porzioni di una riga in base alle posizioni dei byte, dei caratteri, dei separatori o dei campi, cut si rivela prezioso per filtrare e organizzare i dati negli script di shell e nelle operazioni da riga di comando. Le sue applicazioni spaziano dal recupero di colonne specifiche da file CSV alla rimozione di caratteri non necessari o all’analisi dei log. Sebbene spesso utilizzato direttamente sui file, cut interagisce perfettamente anche con l’output di altri comandi quando utilizzato in una pipeline.

Sintassi di base del comando cut

Il comando cut è semplice e utilizza opzioni seguite dal nome del file. La sintassi è la seguente:

cut [OPTIONS] [FILE]

In questa struttura, le OPZIONI determinano il funzionamento del comando cut, consentendo di selezionare un separatore di campo (come una virgola), scegliere campi specifici, impostare intervalli ed escludere le righe prive di separatore, tra le altre funzionalità. Se non viene specificato un file, cut leggerà dall’input standard. Inoltre, è possibile specificare più file, che verranno trattati come un’entità combinata per l’elaborazione.

Opzioni comunemente utilizzate

Il comando “taglia” offre diverse opzioni per individuare con precisione i segmenti di testo da estrarre. Ecco alcune delle più utilizzate:

  • -f o –fields=LIST : consente la selezione di campi specifici in base a un delimitatore designato.
  • -b o –bytes=LIST : Estrae i byte specificati da ogni riga.
  • -c o –characters=LIST : Recupera caratteri specifici da ogni riga.
  • -d o –delimiter : imposta un delimitatore personalizzato al posto del tabulatore predefinito.
  • –complement : restituisce tutto tranne i campi, i byte o i caratteri specificati.
  • -s o –only-delimited : salta le righe prive di delimitatore; tali righe sono incluse per impostazione predefinita.
  • –output-delimiter : consente la selezione di un delimitatore diverso per l’output, in contrasto con il delimitatore di input.

Le opzioni -f, -b, e -cutilizzano un ELENCO per definire cosa estrarre.È possibile specificare quanto segue:

  • Un singolo numero come 2.
  • Più numeri separati da virgole, ad esempio 1, 3, 5.
  • Un intervallo come 2-4 (per estrarre valori da 2 a 4).
  • N-per indicare l’estrazione dalla posizione N alla fine.
  • -Mper indicare l’estrazione dall’avvio fino alla posizione M.

Utilizzo del comando cut in Linux

Per illustrare il funzionamento del comando cut, eseguiamo alcuni esempi pratici. Per prima cosa, creiamo un file di esempio denominato “mte.csv” utilizzando il comando echo:

echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

Comando Echo

Ora possiamo controllare il contenuto del file usando il comando cat:

cat mte.csv

Mostra dati file

È fondamentale sottolineare che il comando cut si limita a presentare l’output specificato senza modificare il file stesso.

Estrazione dei dati per caratteri

Per estrarre i caratteri in base alla posizione, utilizzare l’ -copzione con il comando cut:

cut -c 1, 8 mte.csv

Questo comando estrae il primo e l’ottavo carattere da ogni riga:

Tagliato dai personaggi

Per estrarre i caratteri all’interno di un intervallo specificato, applicare il seguente comando:

cut -c 1-8 mte.csv

Questo estrae i caratteri dalle posizioni da 1 a 8 in ogni riga:

Tagliato per intervallo

Estrazione per byte

Per estrarre byte specifici, utilizzare l’ -bopzione con il comando cut:

cut -b 1-3 mte.csv

Questo comando estrae i primi tre byte da ogni riga del file mte.csv:

Tagliato a byte

Estrazione per campo (colonna)

Per estrarre un intero campo da un file, utilizzare il comando cut con le opzioni -fe :-d

cut -d', ' -f2 mte.csv

In questo comando, -d', 'indica una virgola come delimitatore, mentre -f2indica che cut deve estrarre il secondo campo da ogni riga:

Tagliato per campo

Implementazione di delimitatori personalizzati in cut

Sebbene cut utilizzi di default la tabulazione come delimitatore, se i campi sono separati da un carattere diverso, usa -dper specificare quello corretto. Ad esempio, per estrarre la quinta parola da una frase separata da spazi, puoi usare:

echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

Taglia con delimitatore personalizzato

Esclusione di campi specifici durante l’estrazione

È possibile omettere determinati campi durante l’estrazione del testo da un file utilizzando l’ --complementopzione con il comando cut. Questa opzione specifica che cut debba restituire tutti i campi tranne quelli specificati:

cut -d', ' -f1 mte.csv --complement

Questo comando salta la prima colonna e restituisce il resto del contenuto:

Tagliare con complemento

Modifica del delimitatore di output predefinito

Per impostazione predefinita, durante l’estrazione dei campi, il comando cut mantiene il delimitatore di input nell’output. Tuttavia, è possibile modificare il delimitatore di output utilizzando l’ --output-delimiteropzione:

cut -d', ' -f1-3 --output-delimiter='-' mte.csv

Questo comando utilizza un trattino come separatore nell’output:

Delimitatore di output personalizzato

Combinazione di cut con altri comandi Linux

Il comando cut può essere utilizzato anche in combinazione con altri comandi Linux che utilizzano il simbolo pipeline |.Ad esempio, il seguente comando estrae i primi cinque caratteri da ogni riga di output del whocomando:

who | cut -c 1-5

Taglia con chi

In un altro esempio, puoi usare il comando cut insieme a head per visualizzare le prime due righe di “mte.csv”, estraendo solo i campi empName ed empDesig:

head -n 2 mte.csv | cut -d ', ' -f2, 3

Tagliato con la testa

Navigazione nei formati di dati irregolari con il comando cut di Linux

Il comando cut eccelle nella gestione di dati ben formattati con delimitatori coerenti (come virgole o tabulazioni).Tuttavia, se si incontrano file con spaziatura non coerente o delimitatori misti, l’applicazione del solo comando cut potrebbe produrre risultati insoddisfacenti. Per risolvere questi scenari, è spesso utile pulire i dati in anticipo utilizzando comandi come tro sed, assicurandosi che cut possa estrarre efficacemente le porzioni corrette.

Gestione degli spazi in eccesso

Consideriamo un file denominato “mteData.txt” in cui i campi sono separati da spazi variabili:

cat mteData.txt

Mostra dati campione

Poiché il taglio prevede un singolo delimitatore, utilizzare trper normalizzare la spaziatura prima di applicare il taglio:

cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2

Questo comando elabora “mteData.txt”, sostituisce più spazi con uno solo utilizzando tr, quindi estrae i primi due campi:

Tagliare con Tr

Gestione dei delimitatori misti

Nei casi in cui un file utilizza una combinazione di spazi e virgole, normalizzare il formato con sed. Ad esempio, un file denominato “mteData1.txt” contiene:

cat mteData1.txt

Mostra contenuto di esempio

Utilizzare sedcon cut per convertire tutti gli spazi in virgole e quindi estrarre il primo e il terzo campo:

sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

Taglia con Sed

Conclusione

In questo articolo abbiamo illustrato le funzionalità del comando cut di Linux, uno strumento fondamentale per l’estrazione di dati da file o input piped. Grazie alla sua sintassi semplice, è possibile ottenere facilmente caratteri, byte o campi in base a un delimitatore specificato. Inoltre, abbiamo illustrato come combinare il comando cut con altre utilità come tr, sed, e headper gestire dati non puliti e ottenere un output più efficiente. Che si tratti di gestire file CSV, analizzare log o pulire dati, il comando cut è una risorsa indispensabile per l’elaborazione del testo in ambienti Unix-like.

Domande frequenti

1. Qual è lo scopo principale del comando cut in Linux?

Il comando cut in Linux viene utilizzato principalmente per estrarre sezioni specifiche di testo da file o dall’output di altri comandi. Consente agli utenti di manipolare e formattare i dati in modo efficace in base a delimitatori, posizioni di byte o posizioni di caratteri.

2. Posso combinare il comando cut con altri comandi Linux?

Sì! Il comando cut può essere integrato perfettamente con altri comandi Linux utilizzando il simbolo della pipeline (|).Questo consente una potente elaborazione dei dati, consentendo di filtrare e formattare gli output di vari comandi.

3. Come posso specificare un delimitatore personalizzato quando utilizzo il comando taglia?

È possibile specificare un delimitatore personalizzato utilizzando l’ -dopzione seguita dal carattere di delimitazione desiderato. Ad esempio, per utilizzare una virgola come delimitatore, si usa -d', '.

Fonte e immagini

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *