GNU/Linux >> Linux Esercitazione >  >> Linux

15 Esempi di comandi di divisione e unione di Linux per gestire file di grandi dimensioni

I comandi di divisione e unione di Linux sono molto utili quando si manipolano file di grandi dimensioni. Questo articolo spiega come utilizzare il comando split and join di Linux con esempi descrittivi.

Unisci e dividi la sintassi dei comandi:

unisciti a [OPZIONE]… FILE1 FILE2
dividi [OPZIONE]… [INPUT [PREFIX]]

Esempi di comando di divisione Linux

1. Esempio di divisione di base

Ecco un esempio di base di comando di divisione.

$ split split.zip 

$ ls
split.zip  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax  xaz  xbb  xbd  xbf  xbh  xbj  xbl  xbn
xaa        xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay  xba  xbc  xbe  xbg  xbi  xbk  xbm  xbo

Quindi vediamo che il file split.zip è stato suddiviso in file più piccoli con x** come nomi di file. Dove ** è il suffisso di due caratteri aggiunto per impostazione predefinita. Inoltre, per impostazione predefinita, ogni file x** conterrà 1000 righe.

$ wc -l *
   40947 split.zip
    1000 xaa
    1000 xab
    1000 xac
    1000 xad
    1000 xae
    1000 xaf
    1000 xag
    1000 xah
    1000 xai
...
...
...

Quindi l'output sopra conferma che per impostazione predefinita ogni file x** contiene 1000 righe.

2.Cambia la lunghezza del suffisso usando l'opzione -a

Come discusso nell'esempio 1 sopra, la lunghezza del suffisso di default è 2. Ma questo può essere cambiato usando -a opzione.

Come puoi vedere nell'esempio seguente, utilizza il suffisso di lunghezza 5 sui file divisi.

$ split -a5 split.zip
$ ls
split.zip  xaaaac  xaaaaf  xaaaai  xaaaal  xaaaao  xaaaar  xaaaau  xaaaax  xaaaba  xaaabd  xaaabg  xaaabj  xaaabm
xaaaaa     xaaaad  xaaaag  xaaaaj  xaaaam  xaaaap  xaaaas  xaaaav  xaaaay  xaaabb  xaaabe  xaaabh  xaaabk  xaaabn
xaaaab     xaaaae  xaaaah  xaaaak  xaaaan  xaaaaq  xaaaat  xaaaaw  xaaaaz  xaaabc  xaaabf  xaaabi  xaaabl  xaaabo

Nota:in precedenza abbiamo anche discusso di altre utilità di manipolazione dei file:tac, rev, paste.

3.Personalizza la dimensione del file diviso usando l'opzione -b

La dimensione di ogni file diviso di output può essere controllata usando l'opzione -b.

In questo esempio, i file divisi sono stati creati con una dimensione di 200000 byte.

$ split -b200000 split.zip 

$ ls -lart
total 21084
drwxrwxr-x 3 himanshu himanshu     4096 Sep 26 21:20 ..
-rw-rw-r-- 1 himanshu himanshu 10767315 Sep 26 21:21 split.zip
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xad
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xac
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xab
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaa
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xah
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xag
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaf
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xae
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xar
...
...
...

4. Crea file divisi con suffisso numerico usando l'opzione -d

Come visto negli esempi precedenti, l'output ha il formato x** dove ** sono alfabeti. Puoi cambiarlo in numero usando l'opzione -d.

Ecco un esempio. Questo ha un suffisso numerico sui file divisi.

$ split -d split.zip
$ ls
split.zip  x01  x03  x05  x07  x09  x11  x13  x15  x17  x19  x21  x23  x25  x27  x29  x31  x33  x35  x37  x39
x00        x02  x04  x06  x08  x10  x12  x14  x16  x18  x20  x22  x24  x26  x28  x30  x32  x34  x36  x38  x40

5. Personalizza il numero di blocchi divisi usando l'opzione -C

Per avere il controllo sul numero di blocchi, usa l'opzione -C.

Questo esempio creerà 50 blocchi di file divisi.

$ split -n50 split.zip
$ ls
split.zip  xac  xaf  xai  xal  xao  xar  xau  xax  xba  xbd  xbg  xbj  xbm  xbp  xbs  xbv
xaa        xad  xag  xaj  xam  xap  xas  xav  xay  xbb  xbe  xbh  xbk  xbn  xbq  xbt  xbw
xab        xae  xah  xak  xan  xaq  xat  xaw  xaz  xbc  xbf  xbi  xbl  xbo  xbr  xbu  xbx

6. Evita pezzi di dimensioni zero usando l'opzione -e

Mentre si divide un file relativamente piccolo in un numero elevato di blocchi, è bene evitare blocchi di dimensioni zero poiché non aggiungono alcun valore. Questo può essere fatto usando l'opzione -e.

Ecco un esempio:

$ split -n50 testfile

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xag
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaa
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbx
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbw
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbv
...
...
...

Quindi vediamo che molti blocchi di dimensioni zero sono stati prodotti nell'output di cui sopra. Ora, utilizziamo l'opzione -e e vediamo i risultati:

$ split -n50 -e testfile
$ ls
split.zip  testfile  xaa  xab  xac  xad  xae  xaf

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaa

Quindi vediamo che nessun blocco di dimensioni zero è stato prodotto nell'output sopra.

7. Personalizza il numero di righe usando l'opzione -l

Il numero di righe per file diviso di output può essere personalizzato utilizzando l'opzione -l.

Come si vede nell'esempio seguente, i file divisi vengono creati con 20000 righe.

$ split -l20000 split.zip

$ ls
split.zip  testfile  xaa  xab  xac

$ wc -l x*
   20000 xaa
   20000 xab
     947 xac
   40947 total

Ottieni informazioni dettagliate utilizzando l'opzione –verbose

Per ricevere un messaggio diagnostico ogni volta che viene aperto un nuovo file diviso, usa l'opzione –verbose come mostrato di seguito.

$ split -l20000 --verbose split.zip
creating file `xaa'
creating file `xab'
creating file `xac'

Esempi di comandi per unire Linux

8. Esempio di unione di base

Il comando Unisci funziona sul primo campo dei due file (fornito come input) facendo corrispondere i primi campi.

Ecco un esempio :

$ cat testfile1
1 India
2 US
3 Ireland
4 UK
5 Canada

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
4 UK London
5 Canada Toronto

Quindi vediamo che un file contenente i paesi è stato unito a un altro file contenente le maiuscole sulla base del primo campo.

9. Unisciti ai lavori su Elenco ordinato

Se uno qualsiasi dei due file forniti per unire il comando non è ordinato, viene visualizzato un avviso in output e quella voce particolare non è unita.

In questo esempio, poiché il file di input non è ordinato, visualizzerà un messaggio di avviso/errore.

$ cat testfile1
1 India
2 US
3 Ireland
5 Canada
4 UK

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
join: testfile1:5: is not sorted: 4 UK
5 Canada Toronto

10. Ignora maiuscole/minuscole usando l'opzione -i

Quando si confrontano i campi, la differenza tra maiuscole e minuscole può essere ignorata utilizzando l'opzione -i come mostrato di seguito.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
a NewDelhi
B Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
c Ireland Dublin
d UK London
e Canada Toronto

$ join -i testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

11. Verifica che l'input sia ordinato utilizzando l'opzione –check-order

Ecco un esempio. Poiché testfile1 non è stato ordinato verso la fine, è stato prodotto un errore nell'output.

$ cat testfile1
a India
b US
c Ireland
d UK
f Australia
e Canada

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join --check-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
join: testfile1:6: is not sorted: e Canada

12. Non controllare l'ordinamento usando l'opzione –nocheck-order

Questo è l'opposto dell'esempio precedente. In questo esempio non viene eseguito alcun controllo dell'ordinamento e non verrà visualizzato alcun messaggio di errore.

$ join --nocheck-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London

13. Stampa linee non abbinabili usando -a opzione

Se entrambi i file di input non possono essere mappati uno a uno, tramite l'opzione -a[FILENUM] possiamo avere quelle linee che non possono essere accoppiate durante il confronto. FILENUM è il numero del file (1 o 2).

Nell'esempio seguente, vediamo che l'utilizzo di -a1 ha prodotto l'ultima riga in testfile1 (contrassegnata in grassetto di seguito) che non aveva coppia in testfile2.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada
f Australia

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

$ join -a1 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto
f Australia

14. Stampa solo linee non accoppiate usando l'opzione -v

Nell'esempio precedente sono state prodotte nell'output sia le linee accoppiate che quelle non accoppiate. Ma, se si desidera solo un output non accoppiato, utilizzare l'opzione -v come mostrato di seguito.

$ join -v1 testfile1 testfile2
f Australia

15. Unisci in base a colonne diverse da entrambi i file utilizzando l'opzione -1 e -2

Per impostazione predefinita, le prime colonne in entrambi i file vengono utilizzate per il confronto prima dell'unione. Puoi modificare questo comportamento usando l'opzione -1 e -2.

Nell'esempio seguente, la prima colonna di testfile1 è stata confrontata con la seconda colonna di testfile2 per produrre l'output del comando join.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
NewDelhi a
Washington b
Dublin c
London d
Toronto e

$ join -1 1 -2 2 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

Linux
  1. Comando Linux Cat:utilizzo ed esempi

  2. Come dividere e combinare file dalla riga di comando in Linux

  3. Esempi pratici di comando rsync in Linux

  4. 10 Esempi di comandi DU Linux (dimensioni di utilizzo del disco di file e cartelle)

  5. Esempi di comandi Linux Objcopy per copiare e tradurre file oggetto

lsof Command in Linux (10 esempi)

Opzioni di comando ed esempi di Tee Command in Linux

Cat Command in Linux:esempi essenziali e avanzati

lsof Command in Linux con esempi

Comando diviso Linux con esempi

Comando di comunicazione Linux con esempi