10 Esempi pratici di comandi Linux Cut per selezionare le colonne dei file
Il comando Linux cut viene utilizzato per l’elaborazione del testo. Puoi utilizzare questo comando per estrarre una porzione di testo da un file selezionando le colonne.
Questo tutorial fornisce alcuni esempi pratici di comando cut che puoi utilizzare nelle tue attività quotidiane dalla riga di comando.
Per la maggior parte dell’esempio, utilizzeremo il seguente file di test.
$ cat test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
Seleziona colonna di caratteri
Per estrarre solo una colonna desiderata da un file usa l’opzione -c. L’esempio seguente mostra il secondo carattere di ogni riga di un file test.txt
$ cut -c2 test.txtaps
Come visto sopra, i caratteri a, p, s sono il secondo carattere di ogni riga del file test.txt.
Seleziona colonna di caratteri utilizzando Intervallo
L’intervallo di caratteri può anche essere estratto da un file specificando la posizione iniziale e finale delimitata da -. L’esempio seguente estrae i primi 3 caratteri di ogni riga da un file chiamato test.txt
$ cut -c1-3 test.txtcatcpls
Seleziona la colonna di caratteri utilizzando la posizione iniziale o finale
È possibile passare la posizione iniziale o la posizione finale al comando di taglio con l’opzione -c.
Quanto segue specifica solo la posizione iniziale prima di ‘-‘. Questo esempio estrae dal terzo carattere alla fine di ogni riga dal file test.txt.
$ cut -c3- test.txtt command for file oriented operations. command for copy files or directories. command to list out files and directories with its attributes.
Quanto segue specifica solo la posizione finale dopo “-“. Questo esempio estrae 8 caratteri dall’inizio di ogni riga dal file test.txt.
$ cut -c-8 test.txtcat commcp commals comma
L’intera riga verrebbe stampata se non specifichi un numero prima o dopo il “-” come mostrato di seguito.
$ cut -c- test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
Seleziona un campo specifico da un file
Invece di selezionare il numero x di caratteri, se desideri estrarre un intero campo, puoi combinare l’opzione -f e -d. L’opzione -f specifica quale campo si desidera estrarre e l’opzione -d specifica qual è il delimitatore di campo utilizzato nel file di input.
L’esempio seguente mostra solo il primo campo di ogni riga da / etc / passwd utilizzando il delimitatore di campo: (due punti). In questo caso, il primo campo è il nome utente. Il file
$ cut -d":" -f1 /etc/passwdrootdaemonbinsyssyncgamesbala
Seleziona più campi da un file
Puoi anche estrarre più di un campo da un file o stdout. L’esempio seguente mostra il nome utente e la home directory degli utenti che hanno la shell di accesso come “/ bin / bash”.
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1,6root:/rootbala:/home/bala
Per visualizzare l’intervallo di campi specifica il campo iniziale e il campo finale come mostrato di seguito. In questo esempio, selezioniamo i campi da 1 a 4, 6 e 7
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1-4,6,7root:x:0:0:/root:/bin/bashbala:x:1000:1000:/home/bala:/bin/bash
Seleziona i campi solo quando una riga contiene il delimitatore
Nel nostro esempio / etc / passwd, se passi un delimitatore diverso da: (due punti), cut mostrerà solo l’intera riga.
Nell’esempio seguente, noi ‘ ho specificato il delimitatore come | (pipe) e il comando cut visualizza semplicemente l’intera riga, anche quando non trova alcuna riga che abbia | (pipe) come delimitatore.
$ grep "/bin/bash" /etc/passwd | cut -d"|" -f1root:x:0:0:root:/root:/bin/bashbala:x:1000:1000:bala,,,:/home/bala:/bin/bash
Tuttavia, è possibile filtrare e visualizzare solo le righe che contengono il delimitatore specificato utilizzando l’opzione -s.
L’esempio seguente non mostra alcun output, poiché il comando cut non ha non trova alcuna riga che abbia | (pipe) come delimitatore nel file / etc / passwd.
$ grep "/bin/bash" /etc/passwd | cut -d"|" -s -f1
Seleziona tutti i campi eccetto i campi specificati
Per completare l’elenco dei campi di selezione, utilizza l’opzione –complement.
Viene visualizzato il seguente esempio tutti i campi dal file / etc / passwd eccetto il campo 7
$ grep "/bin/bash" /etc/passwd | cut -d":" --complement -s -f7root:x:0:0:root:/rootbala:x:1000:1000:bala,,,:/home/bala
Cambia il delimitatore di output per la visualizzazione
Per impostazione predefinita il delimitatore di output è lo stesso come delimitatore di input che specifichiamo nell’opzione cut -d.
Per cambiare il delimitatore di output usa l’opzione –output-delimiter come mostrato sotto. In questo esempio, il delimitatore di input è: (due punti), ma il delimitatore di output è # (hash).
$ grep "/bin/bash" /etc/passwd | cut -d":" -s -f1,6,7 --output-delimiter="#"root#/root#/bin/bashbala#/home/bala#/bin/bash
Cambia il delimitatore di output in Newline
In questo esempio, ogni campo dell’output del comando di taglio viene visualizzato in una riga separata. Abbiamo ancora utilizzato –output-delimiter, ma il valore è $ ‘\ n’ che indica che dobbiamo aggiungere una nuova riga come delimitatore di output.
$ grep bala /etc/passwd | cut -d":" -f1,6,7 --output-delimiter=$"\n"bala/home/bala/bin/bash
Combina Cut with Other Unix Command Output
La potenza del comando cut può essere realizzata quando lo combini con lo stdout di qualche altro comando Unix.
Una volta che hai imparato l’uso di base del comando cut che abbiamo spiegato sopra, puoi usare saggiamente il comando cut per risolvere molti dei tuoi requisiti di manipolazione del testo.
Il seguente esempio indica come puoi estrarre solo informazioni utili dall’output del comando ps. Abbiamo anche mostrato come abbiamo filtrato l’output del comando ps usando grep e sed prima che l’output finale fosse dato al comando cut.Qui, abbiamo utilizzato le opzioni di taglio -d e -f che abbiamo spiegato negli esempi precedenti.
Se questo articolo ti è piaciuto, potrebbe piacerti anche ..
|
|