Join

From EIK wiki

Tutvustus

Join on üks unixilaadsete operatsioonisüsteemide käsurea tööriistadest, mis tegeleb andmete töötlemisega veergude(väljade)põhiselt. Join kuulub GNU tuumiktööriistade (GNU Core Utilities - coreutils) hulka ja on seega üks paljudest tööriistadest, mis on olemas peaaegu igas unixilaadses operatsioonisüsteemis. Tööriist võimaldab ühendada kahest sisendist pärinevaid andmeid ühe veeru põhjal, mis sisaldab ühesuguseid andmeid.

Kasutus

Kõige lihtsam tööriista kasutus on kujul:

join fail1 fail2

, kus fail1 ja fail2 on viited ühendatavate failide asukohale. Failidest ühe võib asendada '-' märgiga, mis tähendab, et sisend võetakse standardsisendist.

Siin artiklis on näidete koostamiseks kasutatud järgmisi faile:

Fail1

 1 a1
 2 b1
 3 c1
 4 d1  D1

Fail2

 1 a2
 2 b2
 3 c2

Fail3

 3 c2
 2 b2
 1 a2

Näited on esitatud kujul:

join fail1 fail2
     1 a1 a2
     2 b1 b2
     3 c1 c2

, kus esimesel real on käsureale sisestatav käsklus ja järgmistel ridadel join'i väljund terminalis.

Eelnevalt esitatud viisil käivitatakse tööriist selle vaikimisi seadetega. Vaikimisi seadete puhul:

  • kasutatakse failide ühendamisel kummastki failist esimese veeru väärtusi;
  • eeldatakse, et veergude eraldajaks on üks või mitu tühimärki
  • tühimärke ridade alguses eiratakse;
  • väljundis kasutatakse veeru eraldajana tühikut;
  • väljund koosneb ühendavast veerust ja seejärel faili 1 ja faili 2 ülejäänud veergudest.

Kui selline käsu toimimine või saadav tulemus, ei rahulda on võimalik tööriista käitumist ja väljastatavat tulemust mõjutada lisades käsklusele võtmeid. Võtmed ja nende mõju on eraldi kirjeldatud järgmises alapeatükis, aga nende üldine kasutusmall käsu sisesatamisel on järgmine:

join [võtmed] fail1 fail2

Võtmed

-a faili_number

Väljundis on lisaks ridadele, millele leiti teisest failist vaste, vasteta read failist mille järjekorranumber on lisatud võtme -a järele. Näiteks:

join -a 1 fail1 fail2 
   1 a1 a2
   2 b1 b2
   3 c1 c2
   4 d1 D1

--check-order

Annab veateate, kui sisendfailides ei ole väärtused korrektselt järjestatud.

join --check-order fail1 fail3
   join: fail3:2: is not sorted: 2 b2

--nocheck-order

Ei kontrolli väärtuste järjestatust sisendfailides. Tööriist toimib selliselt ka vaikimisi. Ilma käesolevat lippu kasutamata annab tööriist järjestamata veergude puhul samasuguse veateate nagu kasutades lippu '--check-order', aga samas jätkab sellele vaatamata tööd ning kuvab järgmistel ridadel õnnestunud ühendamiste tulemused.

join fail1 fail3
   join: fail3:2: is not sorted: 2 b2
   3 c1 c2
    
join --nocheck-order fail1 fail3
   3 c1 c2

-e tekst

Määrab teksti millega asendatakse sisendis puuduvad väärtused väljundi veergudes.


--header

Kasutab sisendfailide esimest rida väljundis päisena. Kui sisendfailide päised ei ühti kasutab päiseid esimesest failist.


-i

--ignore-case

Selle võtme kasutamisel ei ole ühendava väärtuse kontroll tõstutundlik. Andmeread failides peavad, aga olema eelnevalt sorteeritud (sort -f).


-1 veeru_number

Määrab failide ühendamisel kasutatava veeru järjekorranumbri esimeses failis. Näiteks käsklus 'join -1 2 fail_x fail_y' kasutaks ühendamisel fail_x teises veerus ja fail_y esimeses (vaikimisi kasutatakse esimest) veerus olevaid andmeid.


-2 veeru_number

Määrab failide ühendamisel kasutatava veeru järjekorranumbri teises failis. Näiteks käsklus 'join -2 2 fail_x fail_y' kasutaks ühendamisel fail_y teises veerus ja fail_x esimeses (vaikimisi kasutatakse esimest) veerus olevaid andmeid.


-j veeru_number

Kasutatakse juhul, kui failide ühendamisel soovitakse kasutada samade järjekorranumbritega veergusid. Näiteks käsklus 'join -j 2 fail_x fail_y' kasutaks ühendamisel fail_y teises veerus ja fail_x teises veerus olevaid andmeid ja on selliselt lühendatud kuju käsklusele 'join -1 2 -2 2 fail_x fail_y'.


-o veergude_loetelu

-o auto

Kasutades märksõna 'auto' lähtub tööriist väljundis esitatavate veergude valikul ainult kummagi faili esimesest reast. See tähendab, et väljundis esitatakse täpselt nii palju veerge, kui on failide esimestes ridades -- puuduvad veerud jäävad tühjaks (või saavad asendatud '-e' lipuga määratud tekstiga) ja lisanduvaid veerge eiratakse.

Väljundis esitatavaid veerge ja nende järjekorda on kasutajal võimalik vabalt valida kasutades lipu '-o' järel loetelu veeru tähistest kujul 'm.n', kus m on faili ja n veeru järjekorranumber. Erandina tähistatakse ühendamise aluseks olevat veergu numbriga null '0'. Veeru tähistest loetelu moodustamiseks eraldatakse need üksteisest komadega või tühikutega, aga viimasel juhul peab olema veergude loetelu ülakomade vahel.


-t tähemärk

Määrab tähemärgi, mida kasutatakse veergude eraldajana nii sisendfailides kui väljundis.


-v faili_number

Väljundiks on ainult sellised read valitud järjekorra numbriga failist, millele teisest failist vastet ei leitud.


-z

--zero-terminated

Reaeraldajana kasutatakse ASCII LF asemel ASCII NUL tähemärki. ASCII LF kasutatakse veergude eraldajana.


Kasutatud materjalid

GNU Core Utilities - https://www.gnu.org/software/coreutils/manual/html_node/index.html