GNU/Linux >> Znalost Linux >  >> Linux

Linux Join Command výukový program pro začátečníky (5 příkladů)

Někdy můžete chtít zkombinovat dva soubory tak, aby výstup dával ještě větší smysl. Například může existovat soubor obsahující názvy kontinentů a jiný soubor obsahující názvy zemí nacházejících se na těchto kontinentech a požadavkem je zkombinovat oba soubory tak, aby se kontinent a odpovídající země objevily na stejném řádku.

To je jen jeden příklad – takových případů použití by mohly být stovky. Pokud používáte Linux a hledáte nástroj, který vám může pomoci v těchto situacích, možná budete chtít vyzkoušet připojit se , což je nástroj příkazového řádku. V tomto tutoriálu probereme tento příkaz pomocí několika snadno pochopitelných příkladů.

Vezměte prosím na vědomí, že všechny příklady uvedené v tomto článku byly testovány na Ubuntu 16.04 a verze příkazu join, kterou jsme použili, je 8.25.

Příkaz spojení Linux

Příkaz join vám umožňuje kombinovat řádky dvou souborů ve společném poli.

join [OPTION]... FILE1 FILE2

Zde je to, co o tomto nástroji říká manuálová stránka:

For each pair of input lines with identical join fields, write a line to standard output. The default 
join field is the first, delimited by blanks. When FILE1 or FILE2 (not both) is -, read standard input.

Následující příklady by vám měly poskytnout dobrou představu o tom, jak funguje příkaz join.

1. Jak zkombinovat řádky souborů pomocí příkazu join?

Pojďme pochopit základní použití příkazu join. Předpokládejme, že existují dva soubory (soubor1 a soubor2), které obsahují následující řádky:

1. Asia:
2. Africa:
3. Europe:
4. North America:

a

1. India
2. Nigeria
3. The Netherlands
4. The US

Nyní můžete tyto dva soubory zkombinovat následujícím způsobem:

join file1 file2

Zde je výstup výše uvedeného příkazu v našem případě:

2. Jak zařídit, aby spojový tisk nespárovatelné řádky?

Ve výchozím nastavení příkaz join tiskne pouze párovatelné řádky. Například, i když soubor1 obsahuje další pole (řádek číslo 5):

1. Asia:
2. Africa:
3. Europe:
4. North America:
5. South America:

spojením souboru1 a souboru2 nevznikne žádný jiný výstup:

Je to proto, že nepárovatelné linky jsou ve výstupu vynechány. Pokud však chcete, stále je můžete mít ve výstupu pomocí -a možnost příkazového řádku. Tato možnost vyžaduje, abyste předali číslo souboru, aby nástroj věděl, o kterém souboru mluvíte.

Například v našem případě by příkaz byl:

join file1 file2 -a 1

Můžete tedy vidět, že ve výstupu byl také zobrazen nespárovaný řádek ze souboru číslo 1 (v našem případě soubor1).

Všimněte si, že v případě, že chcete pouze tisknout nespárované řádky (to znamená, potlačit spárované řádky ve výstupu), můžete to provést pomocí -v možnost příkazového řádku. Tato volba funguje přesně tak, jak funguje -a.

Zde je příklad volby -v:

3. Jak poskytnout vlastní pole pro připojení?

Jak již víme, spojení spojuje řádky souborů ve společném poli, které je ve výchozím nastavení prvním polem. Pokud však chcete, můžete pro každý soubor zadat jiné pole. Zvažte například následující obsah v souboru1 a souboru2.

* 1. Asia:
& 2. Africa:
@ 3. Europe:
# 4. North America:
# 1. India
@ 2. Nigeria
& 3. The Netherlands
* 4. The US

Nyní, pokud chcete, aby druhé pole každého řádku bylo společným polem pro spojení, můžete to nástroji sdělit pomocí -1 a -2 možnosti příkazového řádku. Zatímco první představuje první soubor, druhý odkazuje na druhý soubor. Tyto možnosti vyžadují číselný argument, který odkazuje na spojovací pole pro odpovídající soubor.

Například v našem případě bude příkaz:

join -1 2 -2 2 file1 file2

A zde je výstup tohoto příkazu:

Všimněte si, že v případě, že je pozice společného pole stejná v obou souborech (jako v příkladu, který jsme právě probrali, kde je to 2), můžete nahradit část - 1 [pole] -2 [pole] v příkazu s -j [pole] . Takže v našem případě by se příkaz stal:

join -j2 soubor1 soubor2

4. Jak nastavit, aby operace spojení nerozlišovala malá a velká písmena?

Operace příkazu spojení standardně rozlišuje velká a malá písmena. Zvažte například následující soubory:

soubor1

A. Asia:
B. Africa:
C. Europe:
D. North America:

soubor2

a. India
b. Nigeria
c. The Netherlands
d. The US

Nyní, když se pokusíte spojit tyto dva soubory pomocí výchozího (prvního) společného pole, nic se nestane. Je to proto, že případ prvků pole v obou souborech je odlišný. Chcete-li, aby spojení ignorovalo tento problém s případem, použijte -i možnost příkazového řádku.

Zde je příkaz pro náš případ:

join -i file1 file2

A následující snímek obrazovky ukazuje příkaz v akci:

5. Jak zajistit, aby spojení nekontrolovalo tříděný vstup?

Ve výchozím nastavení příkaz join zkontroluje, zda je zadaný vstup seřazen, a pokud ne, ohlásí. Zvažte například následující výstup, když informace v souboru1 nebyly seřazeny:

Nyní, v případě, že chcete, aby tato chyba/varování zmizela, můžete tak učinit pomocí --nocheck-order volba. Zde je stejný příkaz, ale s touto možností:

Takže můžete vidět, že příkaz join tentokrát nezkontroloval seřazený vstup.

Závěr

Join možná není příliš přímočarý nástroj k pochopení, ale jakmile si na něj zvyknete, může vám v některých situacích výrazně ušetřit čas. Většinu možností příkazového řádku jsme probrali zde. Vyzkoušejte tyto a jakmile budete hotovi, projděte si manuálovou stránku příkazu pro zbytek.


Linux
  1. Linux cd command tutorial pro začátečníky (8 příkladů)

  2. Linux Date Command Tutorial pro začátečníky (8 příkladů)

  3. Linux hostname Command Tutorial pro začátečníky (5 příkladů)

  1. Výuka příkazů Linux pro začátečníky (5 příkladů)

  2. Linux df Command Tutorial pro začátečníky (8 příkladů)

  3. Linux du Command Tutorial pro začátečníky (10 příkladů)

  1. Výukový program Linux echo Command pro začátečníky (5 příkladů)

  2. Linux env Command Tutorial pro začátečníky (5 příkladů)

  3. Návod k příkazu velikosti Linuxu pro začátečníky (6 příkladů)