GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux Cut con esempi pratici

Il comando cut viene utilizzato nei sistemi Linux e Unix per tagliare parti e sezioni da ciascuna riga di un file e scrivere il risultato nell'output standard. Può essere utilizzato per tagliare parti di una riga per posizione di byte, carattere e campo (delimitatore).

In questo tutorial impariamo il comando di taglio di Linux con alcuni esempi pratici che puoi utilizzare nelle tue attività quotidiane da riga di comando.

Taglia comando e sintassi

La sintassi di base per il comando taglia è la seguente:

cut OPTION... [FILE]...

Controlliamo le opzioni di taglio e senza alcuna opzione il comando di taglio non funzionerà.

Opzioni di taglio

-f :Estrarre specificando un campo. Il comando Taglia usa 'TAB' come delimitatore di campo predefinito.

-d :"Tab" è il delimitatore predefinito e utilizzando questa opzione puoi utilizzare un delimitatore specifico.

-b :Per estrarre specificando un byte. È anche possibile specificare l'intervallo di byte.

-c :Per tagliare per carattere. Può essere un elenco di numeri separati da virgole o un intervallo di numeri separati da un trattino (-).

–complement :Questo integrerà la selezione

–output-delimiter :Per modificare il delimitatore di output usa l'opzione -output-delimiter='delimiter'.

--only-delimited :Il taglio non stampa le righe che non contengono delimitatori

Useremo il seguente file di testo denominato 'content.txt' e il file /etc/passwd durante questo tutorial per illustrare i nostri esempi.

$ cat content.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

Come tagliare per delimitatore

L'opzione di taglio più comunemente usata è una combinazione di -d e -f . In pratica estrarrà il contenuto in base a delimitatori specifici e campi elencati.

Ad esempio, quanto segue stampa solo il primo campo di ogni riga dal file '/etc/passwd' usando il delimitatore (:).

$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...

Il seguente esempio in cui utilizziamo lo spazio (" ") come delimitatore e tagliamo il primo campo dal file denominato 'content.txt'.

$ cut -d " " -f 1 content.txt 
Ubuntu
Microsoft
OsX
Unix
FreeBSD

Questo esempio estrae più di un campo da un file specifico. Qui estraiamo il 1° e il 6° campo usando i due punti (:) delimitatore dal file '/etc/passwd' che ha la stringa '/bin/bash':

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
slax:/home/slax

Per visualizzare l'intervallo di campi, specifica il campo iniziale e il campo finale separati da trattino (-) come mostrato di seguito:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
slax:x:1000:1000:/home/slax:/bin/bash

Come completare la selezione di output

Per completare l'elenco dei campi di selezione, utilizzare --complement opzione. Questa opzione utilizzava dove selezionare tutti i campi tranne i campi specificati.

Nell'esempio seguente il comando stampa tutti i campi tranne il 2° campo nel file from '/etc/passwd':

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash

Come specificare un delimitatore di output

Per specificare il delimitatore di output, usa il --output-delimiter opzione. Il delimitatore di input è specificato da -d opzione e per impostazione predefinita il delimitatore di output è lo stesso del delimitatore di input.

Esaminiamo prima l'output senza utilizzare il delimitatore di output come segue:

$  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false

Ora ho aggiunto --output-delimiter opzione e delimitatore di input due punti (:) viene sostituito con il delimitatore di output "SPACE" come segue:

$  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false

Controlliamo un altro esempio, qui usiamo il delimitatore di output per stampare su ogni campo in una nuova riga.

Qui usiamo --output-delimiter come $’\n’ che indica una nuova riga.

Controlla l'output:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=

Come tagliare per caratteri

Il -c L'opzione (colonna) viene utilizzata per tagliare in base alla posizione del carattere. Ricorda che anche "TAB" e "Spazi" sono trattati come caratteri.

Per stampare il primo carattere di ogni riga del file denominato content.txt, utilizzare di seguito:

$ cut -c 1 content.txt
U
M
O
U
F

Nell'esempio seguente visualizzeremo i caratteri da 1 a 7 (intervallo) di ciascuna riga del file:

$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD

Verifichiamo come selezionare le colonne in base alla posizione iniziale o finale specifica.

Per estrarre le colonne dal 2° all'ultimo carattere:

$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD

Per estrarre colonne dal 1° al 4° carattere:

cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free

Come tagliare per byte

Usa il -b opzione per selezionare una parte di una riga specificando la posizione di un byte con numeri separati da virgola (,). Usando il trattino puoi specificare un intervallo di byte.

L'esempio seguente taglia dal 1°, 2° e 3° byte dal file denominato 'content.txt':

$ cut -b 1,2,3 content.txt 
Ubu
Mic
OsX
Uni
Fre

Possiamo anche elencare con intervalli usando il comando seguente:

$ cut -b 1-3,5-7 content.txt 
Ubutu 
Micoso
OsXEl 
Uni
FreBSD

Alcuni esempi pratici di taglio

Cut è più pratico da usare con una combinazione di diversi comandi Linux o Unix.

Ad esempio, vuoi estrarre "USER", "PID" e "COMMAND" usando il comando ps:

 ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- \u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-

Prendiamo un altro esempio per estrarre il valore di memoria "totale", "usato" e "libero" e salvarlo in un file di testo usando più comandi:

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234

Conclusione

Il comando cut può essere inviato tramite pipe con molti altri comandi Linux o Unix. Può essere collegato con uno o più filtri per un'ulteriore elaborazione del testo.

Una delle limitazioni del comando cut è che non supporta la specifica di più di un carattere come delimitatore. Più spazi vuoti vengono contati come più separatori di campo e devono usare il comando tr prima di tagliare per ottenere l'output desiderato.

\n' root /root /bin/bash operator /root /sbin/nologin

Come tagliare per caratteri

Il -c L'opzione (colonna) viene utilizzata per tagliare in base alla posizione del carattere. Ricorda che anche "TAB" e "Spazi" sono trattati come caratteri.

Per stampare il primo carattere di ogni riga del file denominato content.txt, utilizzare di seguito:

 

Nell'esempio seguente visualizzeremo i caratteri da 1 a 7 (intervallo) di ciascuna riga del file:

 

Verifichiamo come selezionare le colonne in base alla posizione iniziale o finale specifica.

Per estrarre le colonne dal 2° all'ultimo carattere:

 

Per estrarre colonne dal 1° al 4° carattere:

 

Come tagliare per byte

Usa il -b opzione per selezionare una parte di una riga specificando la posizione di un byte con numeri separati da virgola (,). Usando il trattino puoi specificare un intervallo di byte.

L'esempio seguente taglia dal 1°, 2° e 3° byte dal file denominato 'content.txt':

 

Possiamo anche elencare con intervalli usando il comando seguente:

 

Alcuni esempi pratici di taglio

Cut è più pratico da usare con una combinazione di diversi comandi Linux o Unix.

Ad esempio, vuoi estrarre "USER", "PID" e "COMMAND" usando il comando ps:

 

Prendiamo un altro esempio per estrarre il valore di memoria "totale", "usato" e "libero" e salvarlo in un file di testo usando più comandi:

 

Conclusione

Il comando cut può essere inviato tramite pipe con molti altri comandi Linux o Unix. Può essere collegato a uno o più filtri per un'ulteriore elaborazione del testo.

Una delle limitazioni del comando cut è che non supporta la specifica di più di un carattere come delimitatore. Più spazi vuoti vengono contati come più separatori di campo e devono usare il comando tr prima di tagliare per ottenere l'output desiderato.


Linux
  1. Come utilizzare il comando Hexdump di Linux con esempi pratici

  2. Comando Linux rsync con esempi pratici

  3. tagliare Esempi di comandi in Linux

  4. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

  5. Qual è il significato di /usr/sbin, /usr/local/sbin e /usr/local/bin?

15 Comando Linux ps con esempi

Comando Trova Linux con esempi pratici

12 Esempi pratici di In Command in Linux

Wait Command in Linux spiegato con esempi pratici

Il comando Uniq in Linux spiegato con esempi

Comando Linux lsof spiegato con 12 esempi pratici