I sistemi operativi basati su Linux offrono molte utilità di elaborazione del testo da riga di comando che puoi utilizzare nella tua routine quotidiana. Il comando cut è una di queste utilità di manipolazione del testo che utilizza delimitatori, byte, campi e colonne per recuperare una stringa richiesta da un database di file flat o da una riga.

Poiché un database di file flat non ha una relazione strutturale e i record sono separati con l'aiuto di delimitatori, cut è uno strumento ideale per estrarre caratteri o byte di informazioni. Questo articolo discute in dettaglio il comando di taglio e mostra alcuni esempi pratici con diverse opzioni di filtro per iniziare con lo strumento.

Panoramica del comando di taglio

cut utilizza la seguente sintassi di base:

taglio 

Puoi anche reindirizzarlo con altri comandi come segue:

echo “stringa_di_caratteri” | taglio 

Si prega di notare che l'assenza di qualsiasi opzione genera un errore. Ecco alcuni flag che puoi usare con cut per richiamare le sue varie funzioni:

instagram viewer
Opzione Descrizione
-B Taglia per posizione di byte
-C Tagli per posizione del personaggio
-D Estrae la stringa utilizzando il delimitatore specificato con l'opzione del campo (-f).
-F Estrae da un campo specificato
-S Estratti per soli delimitatori
--complemento Stampa l'output ad eccezione del campo che hai specificato
--delimitatore di uscita Sostituisci il delimitatore esistente con quello che hai specificato

Ecco alcuni esempi del comando di taglio che ti aiuteranno a comprendere meglio lo strumento e le sue funzioni.

1. Estrai caratteri specifici da una stringa

Utilizzare il -B opzione per recuperare stringhe di caratteri in base al numero di byte, come segue:

eco "Ciao mondo" | taglio -b 1,2,3,5,8,9

Produzione:

Heloor

Puoi anche specificare un percorso file invece di una stringa:

taglia -b 1,2,3,4,5 nomefile.txt

Oppure puoi estrarre i caratteri in base alla loro posizione nel testo. Utilizzare il -C opzione seguita dalla sequenza/ordine dei caratteri che devi recuperare come segue:

eco "Ciao mondo" | taglio -c 1,2,3,5,6,8,10,11

Produzione:

Ciao vecchio

Allo stesso modo, per recuperare campi o colonne da un database di file flat, utilizzare il comando cut con il -F opzione bandiera:

taglia -f 3 database.txt

2. Taglia intervallo di byte o caratteri

Puoi anche usare il -B flag con il comando cut per estrarre e stampare più intervalli di byte come segue:

taglia -b 1-7,16-23 database.txt

È possibile definire l'intervallo per recuperare i caratteri utilizzando il -C bandiera come segue:

taglia -c 1-7,16-23 database.txt

3. Estrai il testo dalla posizione iniziale o finale

Utilizzare il -cn- opzione per estrarre il testo dall'ennesimo carattere in poi fino alla fine della riga, dove n è l'indice di un carattere nella stringa.

Ad esempio, per estrarre la stringa partendo dal sesto carattere fino alla fine della riga:

taglia -c6- database.txt

Oppure usa il seguente comando per recuperare dall'inizio fino all'ultimo m caratteri dal file:

taglia -c-8 database.txt

4. Taglia più campi da un file

Puoi anche stampare più campi da un file usando il -F bandiera.

cut -f 1,2 database.txt

Produzione:

NOME ETÀ 
Giovanni 20
Lisa 24
Jack 18
Bruce 23
Nancy 19

5. Estrai il testo usando i delimitatori

Puoi usare il -D flag per specificare il delimitatore con -F opzione. Il delimitatore specifica il carattere utilizzato per separare i campi in un file di testo.

Ad esempio, per estrarre la prima colonna di /etc/passwd file, usa i due punti (:) come delimitatore:

taglia -d ':' -f 1 /etc/passwd

Allo stesso modo, il valore del delimitatore nel flusso di testo specificato è un singolo spazio:

echo "L'1% dell'1%" | taglia -d ' ' -f 2,3

Produzione:

1% di

6. Modifica il delimitatore di output per la visualizzazione

Il --delimitatore di uscita flag aggiunge flessibilità all'output del comando di taglio. Ad esempio, puoi usare il flag per visualizzare l'output in una riga separata usando il $'\n' (nuova riga), come segue:

grep alice /etc/passwd | taglia -d ':' -f 1,5,7 --output-delimiter=$'\⁠n'

Produzione:

alice
Alice
/bin/sh

Inoltre, puoi anche sostituire un delimitatore di un file di input con il delimitatore di tua scelta nell'output utilizzando il --delimitatore di uscita bandiera:

grep root /etc/passwd | taglia -d ':' -f 1,6,7 --output-delimiter=@

Produzione:

root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin

7. Taglia i campi solo quando una riga contiene il delimitatore

Utilizzare il -S flag per estrarre i campi solo quando le righe contengono un delimitatore. Ad esempio, il comando seguente non recupererà il campo -f 1 a meno che non abbia un delimitatore di spazio:

echo "Ciao Mondo" | taglia -d " " -f 1 -s

Al contrario, il comando sotto indicato genererà un output poiché la stringa contiene il delimitatore specificato:

eco "Ciao mondo" | taglia -d " " -f 1 -s

Produzione:

Ciao

Allo stesso modo, puoi anche usare qualsiasi altro carattere come delimitatore:

echo "Ciao: Mondo" | taglia -d ":" -f 2 -s

Produzione:

Mondo

8. Completa l'output del comando

L'utilità di taglio consente inoltre di stampare tutti i campi tranne il campo specificato. Utilizzare il --complemento opzione come segue per recuperare tutti i dettagli dell'account utente root eccetto la quinta colonna:

grep "root" /etc/passwd | taglia -d ':' --complement -s -f 5

Produzione:

radice: x: 0:0:/radice:/bin/bash

Allo stesso modo, nell'esempio seguente, il -f 1 il parametro deve essere visualizzato Ciao testo tuttavia, a causa del --complemento opzione, stampa solo il resto.

echo "Ciao a tutto il mondo" | taglia -d " " -f 1 --complemento

Produzione:

al Mondo intero

La parte migliore è che puoi combinare il comando cut con l'output standard di altri comandi Linux/Unix.

sed è uno di questi strumenti di modifica del testo che puoi utilizzare per eliminare, inserire e sostituire il testo. Puoi facilmente reindirizzare il suo output al comando di taglio.

Nell'esempio seguente, il comando grep l'output viene inviato tramite pipe all'utilità sed che sostituisce i due punti (:) con un trattino (-) e quindi, cut visualizza i campi 1, 6 e 7 come segue:

grep alice /etc/passwd | sed 's/:/-/g' | taglia -d ' ' -f 1,5,7

Produzione:

alice-x-1005-1008-Alice-/home/new/alice-/bin/sh

Lavorare con il testo su Linux usando il taglio

Il comando taglia è un'utilità della riga di comando flessibile ed efficiente che puoi utilizzare in vari casi d'uso della manipolazione del testo. Utilizza operazioni per filtrare il testo da file o dati di input standard. L'utilità ha anche un vantaggio che consente agli utenti di limitare il testo che desiderano visualizzare e di aggiungere delimitatori di propria scelta.

Tuttavia, questo comando ha anche alcune limitazioni. Non è possibile utilizzare espressioni regolari per specificare il delimitatore o utilizzare più opzioni di comando di taglio simultanee. Questo articolo ha trattato esempi pratici di livello base e avanzato di questa utilità per aiutare i principianti con una chiara comprensione dei comandi di manipolazione del testo su Linux.

I 5 comandi di manipolazione del testo Linux più utili

Vuoi migliorare il tuo gioco Linux e saperne di più sulla manipolazione del testo? Ecco i primi cinque strumenti da riga di comando di Linux per iniziare il tuo viaggio.

Leggi Avanti

CondividereTwittaE-mail
Argomenti correlati
  • Linux
  • Comandi Linux
  • Linux elementare
  • Linux Bash Shell
Circa l'autore
Rumaisa Niazi (10 articoli pubblicati)

Rumaisa è una scrittrice freelance al MUO. Ha indossato molti cappelli, da matematica a appassionata di sicurezza informatica, e ora lavora come analista SOC. I suoi interessi includono la lettura e la scrittura di nuove tecnologie, distribuzioni Linux e tutto ciò che riguarda la sicurezza delle informazioni.

Altro da Rumaisa Niazi

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti