Forst nám zopakoval, jak join funguje. Tedy vezme 2 tabulky (resp. soubory) a podle zadaného pole (impl. 1.), které jsou oddělené oddělovači (impl. tabulátor) sloučit oba soubory na výstup. Přednost má vždy 1. soubor a oba soubory jsou předtřízeny dle zadaného pole.
Ukázkově:
Kód: Vybrat vše
soubor1:
a 1
w 1
w 2
soubor2:
w 3
w 4
výstup:
w 1 3
w 1 4
w 2 3
w 2 4
-t c .... změní oddělovač z tabulátoru na znak c
-1 n .... změní číslo fieldu určeného k porovnávání z 1. souboru na n
-2 n .... změní číslo fieldu určeného k porovnávání z 2. souboru na n
-a [1,2] .... pokud je v prvním souboru porovnávací znak, který není v 2. souboru, pak se tento řádek nevypíše a to platí i obráceně. Tento přepínač toto pravidlo ruší. Pokud máme zadáno -a 1, znamená to, že pokud máme v 1. souboru provnávací znak a, který se v druhém souboru nevyskytuje, vypíšou se na výstup pouze informace z 1. souboru a na místě pro informace z 2. souboru bude pouze prázdné místo. Obdobně pro -a 2. Samozřejmostí je možnost použití -a 1 -a 2.
-o "0,1.2,2.1,1.1 2.2" .... Změní formát výpisu. Uživatel si sám určí v jakém pořadí se mají fieldy vypsat. 0 znamená porovnávací field. 1.2 znamená 2. buňka z 1. souboru. Opět může uživatel využít něco jako -o "0,1.1 1.2" -o "2.1 2.2". Oddělovače mezi informacemi jsou čárky nebo mezery.
Doplňující informace:
1) Žádný ze souborů se nevejde do paměti
2) Máme povoleny rozšíření awk
3) Je zakázáno používat příkaz join
4) Pokud se v průběhu programu u -o odkazuje na field, který na řádku není, bere se jako prázdný, pokud se odkazuje na soubor který není (3. a výš), program zařve.
ukázkový příklad zadání příkazu:
Kód: Vybrat vše
join -t : -o "0,1.1,2.1" -a 1 -a 2 -o "2.2 1.2" -1 2 -2 3