Comando taglio Linux

Comando taglio Linux

Considera la seguente tabella dei dipendenti, prodotta in un editor di testo con un carattere a larghezza fissa, come il corriere:

Nome Data di nascita Tempo di nascita Specialità Data impiegata Tempo impiegato
John 11-05-91 10:11:12 Ingegnere 12-06-14 13:14:15
Paolo 03-16-86 16:17:18 Contabile 06-19-15 19:20:21
Peter 07-20-81 Falegname 08-21-16
Maria 22:23:24 Architetto 01:02:03
Susan 04-17-87 17:22:36 segretario 21-49-55 08:43:32

Supponiamo che questi dati siano in un file chiamato, dipendente.txt, in una directory utente Linux. Ci sono sei colonne di testo con sei titoli, che sono nome, data di nascita, ora di nascita, ecc. Ci sono sei righe costituite da una riga di intestazione e cinque righe di dati. Quindi, questa è una tabella di colonne e righe (linee). Il contenuto di ogni cella della tabella, è chiamato campo. Un campo è anche una sotto-corda. Poiché è stato utilizzato un carattere di larghezza fissa, ci sono colonne di caratteri. Ogni colonna di testo ha colonne di caratteri. Quindi, ci sono colonne di caratteri e colonne di campi.

Per digitare la tabella, inizia con la riga dell'intestazione. Digita il primo campo e premere il tasto Tab sulla tastiera. Digita il campo successivo e premere il tasto Tab. Continua in questo modo fino a dopo l'ultimo campo di intestazione. Premere il tasto Invio. Quando viene premuto il tasto Tab, il carattere '\ t' viene inserito nel codice file, non visto dall'utente. Tuttavia, è visto dall'utente come uno spazio (che può essere lungo). Quando il tasto ENTER viene premuto alla fine della riga, il carattere, '\ n' viene inserito nel codice del file, non visto dall'utente. Il tasto Tab viene conteggiato come un carattere.

Ciascuna delle linee di dati è digitata allo stesso modo. Tuttavia, se un campo è vuoto, deve essere riempito premendo il tasto della barra spaziale fino a quando non viene premuto il tasto Tab per andare alla colonna di testo successivo; In modo che l'inizio del campo successivo si allinei con l'inizio della sua colonna di testo.

Per l'editor di testo Ubuntu, il tasto tab si estende per otto caratteri. Quindi, quando viene premuto il tasto Tab, il numero di caratteri che aggiunge è tale che se il campo fosse pieno di caratteri, il numero di caratteri sarebbe un multiplo di otto. Non dimenticare che alla fine di una riga, il tasto Invio deve essere premuto e questa azione inserisce un carattere nel codice, non visto dall'utente. Quando viene premuto il tasto Tab, un singolo carattere viene inserito nel codice, non visto dall'utente. Quindi, il tasto Tab viene conteggiato come un personaggio.

Le righe sono delimitate dai personaggi di Newline. I campi sono delimitati dai caratteri della scheda. I campi non devono necessariamente essere classici come descritto sopra. Il delimitatore non deve necessariamente essere un personaggio della scheda. Nella tabella sopra, ":" può essere considerato come un delimitatore, anziché la scheda. In questo caso, le sottobsche in ogni riga verranno ripartite. Ad esempio, nel campo della scheda Time of Birth, ":" Delimiterebbe le due colonne dei caratteri (ad entrambe le estremità). Per questa stessa tabella, la prima riga e la riga per Peter non avrebbero alcun delimitatore. L'intera tale linea diventa il suo campo.

La delimitazione delle colonne dei caratteri può attraversare i campi della scheda. Ad esempio, l'ultimo ":" nel campo della scheda Time of Birth e il primo ":" Nel campo della scheda impiegati nel tempo, delimita colonne di caratteri, campi di tab di attraversamento e caratteri della scheda. Altri personaggi delimitanti come le virgole, possono anche essere trovati in altri file.

Contenuto dell'articolo

  • Taglia la sintassi
  • Tagliare le colonne del campo
  • Tagliare colonne di byte
  • Tagliare colonne di caratteri
  • Delimitatore
  • L'opzione -s
  • L'opzione -Complezione
  • Conclusione

Taglia la sintassi

Il comando taglio copia colonne per caratteri o per campi, in base a determinate opzioni e ai loro valori. Può anche copiare le righe, ma le condizioni per copiare le righe sono limitate. Può copiare un set di colonne e righe; Tuttavia le condizioni per le righe coinvolte sono limitate. Le righe sono linee. La sintassi è:

Taglia l'opzione ... [File] ..

Può esserci più di un file. Tuttavia, questo tutorial utilizza solo un file il cui nome è dipendente.txt nella directory utente e con il contenuto sopra. Se non esiste un argomento di file, tagliare le letture dall'input standard. Cut è un comando shell Linux con diverse opzioni possibili. Alcune opzioni prendono valori.

Il conteggio della colonna inizia da 1 e non zero. Quindi, la prima colonna del carattere (a sinistra) è la colonna 1; La colonna del secondo carattere è la colonna 2; La colonna del terzo carattere è la colonna 3 e così via. La prima colonna di campo (a sinistra) è la colonna di campo 1; La seconda colonna di campo è la colonna del campo 2; La terza colonna del campo è la colonna di campo 3 e così via.

Quindi, il comando di taglio copia le sezioni dalle righe in un file, come è stato sottolineato. Normalmente stampa il risultato su output standard.

Tagliare i campi

Tagliare i campi significa copiare i campi. Il file originale rimane intatto. L'opzione -f viene utilizzata per questo, dove F sta per il campo. -F usa il carattere della scheda come delimitatore. Quindi, in

$ Cut -f 1,3 dipendente.TXT

-f significa che i comandi copiano campi e non caratteri o byte. Il valore per -f è 1 e 3 separato da virgole e nessun spazio. Ciò significa inviare all'output standard, colonne di campo 1 e 3. Il risultato è:

Nome Tempo di nascita
John 10:11:12
Paolo 16:17:18
Peter
Maria 22:23:24
Susan 17:22:36

Se fossero necessarie colonne di campo, 1, 3, 5, il valore per -f sarebbe stato 1,3,5 numeri separati da virgole e senza spazio. Ecco come è possibile scegliere le colonne di campo. In questo caso, la scheda è il delimitatore.

Gamma di colonne di campo

Il comando seguente seleziona le colonne di campo dalla colonna di campo, 2 a colonna di campo, 5, compresa:

$ Cut -f 2-5 dipendente.TXT

L'output è:

Data di nascita Tempo di nascita Specialità Data impiegata
11-05-91 10:11:12 Ingegnere 12-06-14
03-16-86 16:17:18 Contabile 06-19-15
07-20-81 Falegname 08-21-16
22:23:24 Architetto
04-17-87 17:22:36 segretario 21-49-55

Nota il trattino tra 2 e 5 per indicare l'intervallo.

Copia da un numero di campo, n e superiore

Il comando seguente copie dalla quinta colonna del campo e superiore:

$ Cut -f 5- Employee.TXT

Nota il trattino subito dopo 5, senza spazio nel mezzo. Il risultato è:

Data impiegata Tempo impiegato
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Copia del numero di campo sotto, n

Il seguente comando, copia la seconda colonna del campo e quelle seguenti:

$ Cut -f -2 dipendente.TXT

Nota il trattino poco prima di 2, senza spazio nel mezzo. Il risultato è:

Nome Data di nascita
John 11-05-91
Paolo 03-16-86
Peter 07-20-81
Maria
Susan 04-17-87

Tagliare colonne di byte

Le colonne di byte vengono copiate in modo simile alle colonne di campo. Se il codice ASCII è in vigore, allora un byte è un carattere. In questo caso, una scheda (\ t) è un personaggio e, se copiata, avrà il suo effetto di portare il cursore dove dovrebbe essere il nono carattere. L'opzione per i byte è -b. Il seguente comando illustra questo per la seconda, terza e quarta byte (carattere) colonne:

$ Cut -b 2,3,4 dipendente.TXT

L'output è:

AME
OHN
aul
ete
ary
Stati Uniti d'America

Effetto della scheda

Il comando seguente visualizza colonne byte dal primo al decimo:

$ Cut -b 1-10 dipendente.TXT

L'output è:

Nome Data
John 11-05
Paolo 03-
Peter
Maria 07-2
Susan 04-1

Il numero di byte (caratteri) in ogni riga non è lo stesso perché (a) ci sono due caratteri spaziali dopo Paul, nel campo di Paolo; e (b) il carattere della scheda viene conteggiato come un personaggio (e ha il suo effetto).

Tagliare colonne di caratteri

Le colonne di caratteri sono gestite allo stesso modo delle colonne di byte. In effetti, quando si tratta di codifica dei personaggi multi-byte, usa i caratteri, anziché byte. L'opzione per i caratteri è -c. I seguenti due comandi riproducono i due output precedenti (in ordine):

$ Cut -c 2,3,4 dipendente.TXT
$ Cut -c 1-10 dipendente.TXT

Delimitatore

Invece di usare il carattere tab per separare le sotto-corde, delimitatori come ':', '-', ',', ', ecc. può essere utilizzata. Tale delimitatore ri-partizioni sotto-strings che formano la linea. In altre parole, invece che i campi vengono separati dal carattere della scheda, sono separati dal nuovo delimitatore. I comandi in questo caso, sono simili ai comandi di campo con l'opzione -f, ma con l'opzione -d per delimitatore, inclusa. Il seguente comando copia i primi due campi in base al delimitatore '-'.

$ Cut -d ' -' -f 1,2 dipendente.TXT

L'output è:

Nome Data di nascita Tempo di nascita Specialità Data impiegata Tempo impiegato
John 11-05
Paolo 03-16
Peter 07-20
Maria 22:23:24 Architetto 01:02:03
Susan 04-17

Questo risultato è logicamente corretto. Tutta la prima riga è stata visualizzata, in quanto non ha "-". Tutta la quinta riga è stata visualizzata, in quanto non ha "-". Il personaggio della scheda ora è solo un singolo personaggio, anche se ha ancora il suo effetto. La riga per Paul, ad esempio, "Paul 03" è ora un campo e "16" è il secondo campo. Con il "-" delimitatore, gli allineamenti verticali per i nuovi campi sono poveri. Sono stati restituiti due campi, separati da '-'. '-' è stato ri-esplosione.

La prima e la quinta riga che non hanno i delimitatori possono essere rimossi con l'opzione -s. Ricorda, righe in questo argomento, sono linee.

L'opzione -s

Il risultato di cui sopra non dovrebbe avere la prima e la quinta riga. L'opzione -s elimina le linee che non hanno il delimitatore. Con l'opzione -s, il comando sopra diventa:

$ CUT -S -D ' -' -F 1,2 Employee.TXT

Si ottiene un risultato più soddisfacente, cioè:

John 11-05
Paolo 03-16
Peter 07-20
Susan 04-17

Le due nuove colonne di campo ricaricato, ora sono chiaramente viste.

L'opzione -Complezione

Questo copia i complementi per le colonne dei byte, dei caratteri o dei campi scelti. Il comando seguente copia gli ultimi due campi (per delimitatore di tab), anziché i primi quattro:

$ Cut -Complice -f -4 dipendente.TXT
Data impiegata Tempo impiegato
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Conclusione

Il comando taglio copia colonne di byte o di caratteri o di sotto-corde, fuori dalle righe di testo in un file. Per impostazione predefinita, invia le parti selezionate delle linee all'uscita standard. Una sotto-corda delimitata è un campo. Per impostazione predefinita, il delimitatore per le sotto-corde è il carattere della scheda. Tuttavia, questo può essere cambiato. Un delimitatore come '-' o ':' o ", ecc. può essere utilizzata. Una volta fatto, la linea viene ripartittata in diverse sottobringhe. L'opzione -s può essere utilizzata per eliminare dall'uscita, linee che non hanno il delimitatore.