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