androide

Comando di taglio Linux con esempi

Pipes, Grep, Sort Commands: Linux Tutorial 9

Pipes, Grep, Sort Commands: Linux Tutorial 9

Sommario:

Anonim

Esistono molte utility disponibili nei sistemi Linux e Unix che ti consentono di elaborare e filtrare i file di testo. Cut è un'utilità della riga di comando che consente di tagliare parti di linee da file specificati o dati di piping e stampare il risultato sull'output standard. Può essere usato per tagliare parti di una linea per delimitatore, posizione byte e carattere.

In questo tutorial, ti mostreremo come utilizzare il comando di taglio di Linux attraverso esempi pratici e spiegazioni dettagliate delle opzioni di taglio più comuni.

Come utilizzare il comando Taglia

La sintassi per il comando cut è la seguente:

cut OPTION……

Quando si utilizza il comando taglia è necessario utilizzare una e solo una delle seguenti opzioni:

  • -f ( --fields=LIST ) - Selezionare specificando un campo, un insieme di campi o un intervallo di campi. Questa è l'opzione più comunemente usata. -b ( --bytes=LIST ) - Selezionare specificando un byte, un set di byte o un intervallo di byte. -c ( --characters=LIST ) - Selezionare specificando un carattere, un set di caratteri o un intervallo di caratteri.

Altre opzioni sono:

  • -d ( --delimiter ) - Specifica un delimitatore che verrà utilizzato al posto del delimitatore "TAB" predefinito. --complement : completa la selezione. Quando si utilizza questa opzione, cut visualizzerà tutti i byte, i caratteri o i campi tranne quelli selezionati. -s ( --only-delimited ) - Per impostazione predefinita, il taglio stamperà qualsiasi riga che non contiene caratteri delimitatori. Quando si utilizza questa opzione, il taglio non stampa linee che non contengono delimitatori. --output-delimiter - L'impostazione predefinita è utilizzare il delimitatore di input come delimitatore di output. Questa opzione consente di specificare una stringa del delimitatore di output diversa.

Il comando cut può accettare zero o più nomi FILE di input. Se non viene specificato FILE o quando FILE è - , cut leggerà l'input standard.

L'argomento LIST passato alle opzioni -f , -b e -c può essere un numero intero, più numeri interi separati da virgole, un intervallo di numeri interi o più intervalli interi separati da virgole. Ogni intervallo può essere uno dei seguenti:

  • N l'ennesimo campo, byte o carattere, a partire da 1. N- dall'ennesimo campo, byte o carattere, fino alla fine della riga. NM dal campo Nth all'Mth, byte o carattere. -M dal primo all'ennesimo campo, byte o carattere.

Come tagliare per campo

Il comando Taglia viene utilizzato principalmente per visualizzare i campi selezionati da ciascuna riga di file o l'input standard. Se non specificato, il delimitatore predefinito è "TAB".

Negli esempi seguenti, useremo il seguente file. Tutti i campi sono separati da schede.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

Per visualizzare il 1o e il 3o campo dovresti usare:

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

O se si desidera visualizzare dal 1 ° al 4 ° campo:

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Come tagliare in base a un delimitatore

Per tagliare in base a un delimitatore, utilizzare l'opzione -d seguita dal delimitatore che si desidera utilizzare.

Ad esempio, per visualizzare il 1 ° e il 3 ° campo usando ":" come delimitatore, digitare:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

Puoi usare qualsiasi carattere singolo come delimitatore. Nel seguente esempio stiamo usando il carattere spazio come delimitatore e stampando il 2 ° campo:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

Come integrare la selezione

Per completare l'elenco dei campi di selezione utilizzare --complement opzione --complement . Questo stamperà solo quei campi che non sono selezionati con l'opzione -f .

Il seguente comando stamperà tutti i campi tranne il 1o e 3o:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Come specificare un delimitatore di output

Per specificare il delimitatore di output utilizzare l'opzione --output-delimiter . Ad esempio, per impostare il delimitatore di output su _ dovresti usare:

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

245:789_M:4540 535:763_M:3476

Come tagliare per byte e caratteri

Prima di andare oltre, facciamo una distinzione tra byte e caratteri.

Un byte è 8 bit e può rappresentare 256 valori diversi. Quando fu stabilito lo standard ASCII, esso prese in considerazione tutte le lettere, i numeri e i simboli necessari per lavorare con l'inglese. La tabella dei caratteri ASCII ha 128 caratteri e ogni carattere è rappresentato da un byte. Quando i computer hanno iniziato a diventare popolari a livello globale, le aziende tecnologiche hanno iniziato a introdurre nuove codifiche di caratteri per lingue diverse e per lingue con più di 256 caratteri, non era possibile una semplice mappatura da 1 a 1. Ciò porta a diversi problemi come la condivisione di documenti o la navigazione di siti Web ed era necessario un nuovo standard Unicode in grado di gestire la maggior parte dei sistemi di scrittura del mondo. UTF-8 è stato creato per risolvere questi problemi. In UTF-8, non tutti i caratteri sono rappresentati con 1 byte. I caratteri possono essere rappresentati da 1 byte a 4 byte.

Negli esempi seguenti, stiamo usando il carattere ü che richiede 2 byte.

Utilizzare l'opzione -b ( --bytes ) per tagliare una sezione di una linea specificando una posizione in byte.

Seleziona il 5 ° byte:

echo 'drüberspringen' | cut -b 5

b

Seleziona il 5 °, 9 ° e 13 ° byte:

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Seleziona l'intervallo dal 1 ° al 5 ° byte:

echo 'drüberspringen' | cut -b 1-5

drüb

Al momento della stesura di questo articolo, la versione di taglio in bundle in coreutils GNU non ha un'opzione per tagliare per carattere. Quando si utilizza l'opzione -c cut si comporta come quando si utilizza l'opzione -b .

Esempi di taglio

Il comando di taglio viene solitamente utilizzato in combinazione con altri comandi tramite piping. Ecco alcuni esempi.

Ottieni un elenco di tutti gli utenti

L'output del comando getent passwd viene passato a cut che stampa il primo file usando : come delimitatore.

getent passwd | cut -d ':' -f1

Visualizza i 10 comandi più utilizzati

Nell'esempio seguente il taglio viene utilizzato per rimuovere i primi 8 byte da ciascuna riga dell'output del comando di history .

history | cut -c8- | sort | uniq -c | sort -rn | head

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando di taglio di Linux. Sebbene molto utile, il comando cut ha alcune limitazioni. Non supporta la specifica di più di un carattere come delimitatore e non supporta più decimetri.

tagliare il terminale