GNU/Linux >> Znalost Linux >  >> Linux

15 příkladů příkazů Linux Split a Join pro správu velkých souborů

Linuxové příkazy rozdělení a spojení jsou velmi užitečné při manipulaci s velkými soubory. Tento článek vysvětluje, jak používat příkaz rozdělení a spojení v Linuxu s popisnými příklady.

Syntaxe příkazu pro spojení a rozdělení:

připojit [OPTION]… FILE1 FILE2
rozdělit [OPTION]… [INPUT [PREFIX]]

Příklady příkazů rozdělení Linuxu

1. Příklad základního rozdělení

Zde je základní příklad příkazu split.

$ 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

Vidíme tedy, že soubor split.zip byl rozdělen na menší soubory s x** jako názvy souborů. Kde ** je přípona dvou znaků, která je standardně přidána. Ve výchozím nastavení by každý soubor x** obsahoval 1000 řádků.

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

Takže výše uvedený výstup potvrzuje, že ve výchozím nastavení obsahuje každý soubor x** 1000 řádků.

2. Změňte délku přípony pomocí volby -a

Jak je uvedeno v příkladu 1 výše, výchozí délka přípony je 2. To však lze změnit pomocí volby -a.

Jak vidíte v následujícím příkladu, používá příponu délky 5 na rozdělených souborech.

$ 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

Poznámka:Dříve jsme také diskutovali o dalších nástrojích pro manipulaci se soubory – tac, rev, paste.

3.Upravte velikost rozděleného souboru pomocí volby -b

Velikost každého výstupního rozděleného souboru lze ovládat pomocí volby -b.

V tomto příkladu byly rozdělené soubory vytvořeny o velikosti 200 000 bajtů.

$ 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. Vytvořte rozdělené soubory s číselnou příponou pomocí volby -d

Jak je vidět v příkladech výše, výstup má formát x**, kde ** jsou abecedy. Toto můžete změnit na číslo pomocí volby -d.

Zde je příklad. Toto má na rozdělených souborech číselnou příponu.

$ 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. Upravte počet rozdělených částí pomocí volby -C

Chcete-li získat kontrolu nad počtem bloků, použijte volbu -C.

Tento příklad vytvoří 50 kusů rozdělených souborů.

$ 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. Vyhněte se nulovým blokům pomocí volby -e

Při rozdělování relativně malého souboru na velké množství částí je dobré se vyvarovat nulových částí, protože nepřidávají žádnou hodnotu. To lze provést pomocí volby -e.

Zde je příklad:

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

Vidíme tedy, že ve výše uvedeném výstupu bylo vyrobeno mnoho kusů nulové velikosti. Nyní použijte volbu -e a podívejte se na výsledky:

$ 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

Vidíme tedy, že ve výše uvedeném výstupu nebyl vytvořen žádný blok nulové velikosti.

7. Upravte počet řádků pomocí volby -l

Počet řádků na výstupní rozdělený soubor lze upravit pomocí volby -l.

Jak je vidět v příkladu níže, rozdělené soubory jsou vytvořeny s 20 000 řádky.

$ split -l20000 split.zip

$ ls
split.zip  testfile  xaa  xab  xac

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

Získejte podrobné informace pomocí možnosti –verbose

Chcete-li získat diagnostickou zprávu při každém otevření nového rozděleného souboru, použijte možnost –verbose, jak je uvedeno níže.

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

Příklady příkazů spojení Linux

8. Příklad základního spojení

Příkaz Join funguje na prvním poli ze dvou souborů (dodávaných jako vstup) tak, že odpovídá prvním polím.

Zde je příklad:

$ 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

Vidíme tedy, že soubor obsahující země byl spojen s jiným souborem obsahujícím velká písmena na základě prvního pole.

9. Připojte se k pracím na tříděném seznamu

Pokud některý ze dvou souborů zadaných pro příkaz join není seřazen, zobrazí se na výstupu varování a konkrétní záznam není spojen.

V tomto příkladu, protože vstupní soubor není seřazen, zobrazí varovnou/chybovou zprávu.

$ 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. Ignorujte velikost písmen pomocí volby -i

Při porovnávání polí lze rozdíl v malých a velkých písmenech ignorovat pomocí volby -i, jak je uvedeno níže.

$ 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. Ověřte, že je vstup seřazen pomocí možnosti –check-order

Zde je příklad. Vzhledem k tomu, že testfile1 nebyl seřazen ke konci, byla ve výstupu vytvořena chyba.

$ 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. Nekontrolujte řazení pomocí možnosti –nocheck-order

To je opak předchozího příkladu. V tomto příkladu se neprovádí žádná kontrola řazení a nezobrazí žádné chybové hlášení.

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

13. Vytisknout nepárovatelné řádky pomocí volby -a

Pokud oba vstupní soubory nelze namapovat jeden na jeden, pak pomocí volby -a[FILENUM] můžeme mít ty řádky, které nelze při porovnávání spárovat. FILENUM je číslo souboru (1 nebo 2).

V následujícím příkladu vidíme, že použití -a1 vytvořilo poslední řádek v testfile1 (označený níže tučně), který neměl v testfile2 žádný pár.

$ 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. Tisknout pouze nespárované řádky pomocí volby -v

Ve výše uvedeném příkladu byly na výstupu vytvořeny jak spárované, tak nepárové linky. Pokud však požadujete pouze nespárovaný výstup, použijte volbu -v, jak je uvedeno níže.

$ join -v1 testfile1 testfile2
f Australia

15. Spojit na základě různých sloupců z obou souborů pomocí volby -1 a -2

Ve výchozím nastavení se první sloupce v obou souborech používají pro porovnání před spojením. Toto chování můžete změnit pomocí volby -1 a -2.

V následujícím příkladu byl první sloupec testfile1 porovnán s druhým sloupcem testfile2 za účelem vytvoření výstupu příkazu spojení.

$ 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. Linux Cat Command:Použití a příklady

  2. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  3. Praktické příklady příkazu rsync v Linuxu

  1. Příklady příkazů Linux Objcopy pro kopírování a překlad objektových souborů

  2. Jak kopírovat soubory v Linuxu a Unixu? 10 cp Příklady příkazů

  3. 10 příkladů příkazů Cat pro správu souborů v systému Linux / UNIX

  1. Linuxové příkazy – přehled a příklady

  2. 10 příkladů příkazů Linux DU (velikost využití disku souborů a složek)

  3. Příklady příkazů diff v Linuxu