GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione del comando di taglio di Linux con 6 esempi

Introduzione

Il cut command è un'utilità della riga di comando che consente di ritagliare sezioni di un file specificato o di dati inviati tramite pipe e di stampare il risultato sull'output standard. Il comando taglia parti di una riga per campo, delimitatore, posizione byte e carattere.

In questo tutorial imparerai cosa il cut comando è e come usarlo.

Prerequisiti

  • Un sistema che esegue Linux.
  • Accesso a un terminale.

Taglia la sintassi dei comandi

Il cut il comando accetta la seguente sintassi:

cut [option] [file]

Opzioni

Specificando un [option] è necessario. In caso contrario, il comando genera un errore. Le opzioni disponibili sono descritte nella sezione seguente.

Archivio

Per [file] , inserisci il nome del file che desideri elaborare. La mancata indicazione di un nome file indica il cut comando da leggere dallo standard input, nel qual caso cut filtra la condotta. Se specifichi più nomi di file, il cut comando concatena il contenuto richiesto.

Opzioni comando taglia

Il cut le opzioni del comando forniscono istruzioni sull'uso di un delimitatore, sul taglio in base alla posizione del byte, al campo o al carattere. Utilizza un'unica opzione per ogni cut comando che esegui.

Le opzioni disponibili sono:

Opzione Descrizione
-f (--fields=LIST) Seleziona utilizzando un campo specifico, un set di campi o un intervallo di campi.
-b (--bytes=LIST) Selezionare utilizzando un byte specificato, un set di byte o un intervallo di byte.
-c (--characters=LIST) Selezionare utilizzando un carattere specificato, un set di caratteri o un intervallo di caratteri.
-d (--delimiter) Utilizzato per specificare un delimitatore da utilizzare al posto del delimitatore TAB predefinito.
--complement Quando specificata, questa opzione indica cut per visualizzare tutti i byte, i caratteri oi campi, eccetto quelli selezionati.
-s (--only-delimited) L'impostazione predefinita è stampare le righe che non contengono caratteri delimitatori. Specificando il -s l'opzione indica a cut di non stampare le righe che non contengono delimitatori.
--output-delimiter Per impostazione predefinita, cut usa il delimitatore di input come delimitatore di output. Specificando il --output-delimiter l'opzione consente di specificare un delimitatore di output diverso.

Il -f , b e -c le opzioni prendono il LIST argomento, che è uno dei seguenti:

  • Un numero intero N che rappresenta un byte, campo o carattere, a partire da 1.
  • Più numeri interi, separati da virgole.
  • Un intervallo di numeri interi.
  • Più intervalli di interi, separati da virgole.

Ciascun intervallo può essere uno dei seguenti:

  • N- - Inizia dal numero intero N (campo, byte o carattere) fino alla fine della riga.
  • N-M - Dal numero intero N fino al numero intero M , compreso.
  • -M - Dal primo campo, byte o carattere, fino al M specificato campo, byte o carattere.

Esempi di taglio Linux

Di seguito sono riportati i cut più comuni casi d'uso dei comandi.

Importante: Presta attenzione alla localizzazione del file/dell'output del comando che stai elaborando. Il taglio di caratteri o byte in una lingua diversa dall'inglese può produrre un output errato se il carattere in questione è più lungo di un byte.

Taglio per byte

Il -b l'opzione consente di estrarre i dati utilizzando i byte. La sintassi è:

cut -b [LIST] [file]

Il [LIST] argomento sono i byte da estrarre da ogni riga di [file] .

A seconda di cosa vuoi estrarre, puoi tagliare un singolo byte, più byte o un intervallo di byte. Per tagliare da un file specifico, specifica il nome del file alla fine del comando. Ad esempio, utilizzeremo employees.txt per il test:

Per estrarre il primo byte da ogni riga di input, esegui:

cut -b 1 employees.txt

Il comando stampa solo il primo byte da ogni riga di input del file.

L'esempio seguente mostra come reindirizzare il comando who ed estrarre i primi 5 byte dall'output:

who | cut -b -5

Taglio per personaggi

Per tagliare per caratteri, specifica il -c opzione. Il taglio per caratteri è simile al taglio per byte, tranne per il fatto che è necessario specificare la posizione del carattere anziché la posizione del byte. La sintassi è:

cut -c [LIST] [file]

Il [LIST] argomento specifica i caratteri da estrarre da ogni riga di [file] .

Ad esempio:

cut -c 10- employees.txt

Il comando estrae tutto dal carattere 10 fino alla fine della riga da ciascuna riga di employees.txt . I risultati vengono stampati in output standard.

L'esempio seguente mostra il risultato quando un file non è specificato e cut legge il suo input dallo standard input. Dai un'occhiata al who output del comando:

L'output indica che un utente è attualmente connesso. Usa il cut comando per estrarre il nome utente dell'utente che ha effettuato l'accesso dal who output del comando:

who | cut -c 1-8

Nell'esempio sopra, indichiamo cut per estrarre i caratteri da 1 a 8 da ciascuna riga di input. In caso di più risultati, ordina i risultati aggiungendo al comando | sort .

Inoltre, usa cut per estrarre più caratteri diversi da una riga. Ad esempio, visualizza il nome utente e l'ora di accesso di tutti gli utenti che hanno effettuato l'accesso:

who | cut -c 1-8,18-

Taglia in base a un delimitatore

Se i campi non sono separati dal carattere di tabulazione predefinito, utilizza il -d opzione per specificare un delimitatore diverso. Ciò significa che il carattere specificato dopo il -d opzione è considerata il separatore nelle righe. La sintassi è:

cut -d[delimiter] [file]

Al posto del [delimiter] argomento, specificare il delimitatore desiderato. Puoi usare qualsiasi carattere come delimitatore. Usando il cut comando per estrarre i campi da un file senza specificare il -d opzione significa che il delimitatore predefinito è il carattere di tabulazione .

Nell'esempio seguente, utilizziamo lo spazio bianco come delimitatore e stampiamo il secondo campo:

echo "phoenixNAP is a global IT services provider" | cut -d ' ' -f 2

Taglio per campi

Quando si esegue il pipe in comandi il cui output non ha un formato fisso (ad esempio, il who comando), il -c l'opzione non è utile. Usando il -f l'opzione per separare per campi è una scelta migliore in questo caso.

Ad esempio:

cut -f 2 employees.txt

Nell'esempio sopra, abbiamo usato il -f opzione per estrarre il secondo campo da employees.txt file.

Per tagliare campi specifici da un file, specificare un delimitatore diverso. Ad esempio, il /etc/passwd l'output del file contiene tutti gli utenti del sistema, i numeri ID, la directory home, ecc.

I dati nel /etc/passwd il file non è allineato allo stesso modo dei dati nel who uscita del comando. Pertanto, non è possibile estrarre tutti gli utenti del sistema basandosi sul numero del carattere.

Tuttavia, i campi in /etc/passwd file sono delimitati da due punti. Quindi, conta il numero di due punti per estrarre gli stessi campi. Ad esempio:

cut -d: -f1,6 /etc/passwd

L'output restituisce ogni utente nel sistema e la sua home directory, corrispondenti rispettivamente ai campi 1 e 6.

Completa una selezione

Il --complement l'opzione stampa tutto tranne il carattere/byte/campo nella posizione specificata. Ad esempio, il comando seguente stampa tutti i campi tranne il primo e il terzo:

cut employees.txt -f 1 --complement

Specifica un delimitatore di output

Quando si specificano più caratteri/byte/campi, il cut comando concatena l'output senza un delimitatore. Specifica un delimitatore nell'output utilizzando il --output-delimiter opzione.

Ad esempio, per impostare il delimitatore di output su _ (sottolineatura), usa:

cut employees.txt -f 1,3 --output-delimiter='_'

Linux
  1. Comando di spegnimento di Linux spiegato con esempi

  2. Il comando nslookup Linux spiegato con esempi

  3. Comando Traceroute di Linux, spiegato con esempi

  4. Comando JQ in Linux con esempi

  5. tagliare Esempi di comandi in Linux

Comando Wait in Linux spiegato con esempi

Il comando Tr in Linux spiegato con esempi

w Comando spiegato con esempi in Linux

Comando Linux Cat spiegato con esempi

Spiegazione del comando tee di Linux (con esempi)

Spiegazione del comando csplit di Linux (con esempi)