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
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.