alătură-te (Unix)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

se alăture este o comandă de Unix si Unix- ului de operare sisteme , și mai mult , în general , a POSIX [1] sisteme , care citește două fișiere text ale căror linii conțin date separate în mai multe domenii, și se alătură împreună cele care au un anumit domeniu în comun , prezentând rezultatul la ieșirea standard . Liniile de date ale ambelor fișiere trebuie mai întâi sortate în funcție de valoarea câmpurilor alese pentru îmbinare (de exemplu prin comanda sortare ), altfel rezultatul este nedefinit.

Prin specificarea opțiunilor adecvate, este, de asemenea, posibil să utilizați îmbinări pentru a obține linii care nu se potrivesc, atât ale unui singur fișier, cât și ale ambelor, și ambele în plus față de și în locul ieșirii normale.

Sintaxă

Sintaxa generală a îmbinărilor este după cum urmează:

 join [ options ] [-] file1 file2

Parametrii fișier1 și fișier2 specifică numele primului și al doilea fișier text pentru a se uni liniile, respectiv. Unul dintre ele poate fi o cratimă (" - ") pentru a indica intrarea standard .

Linia dublă - (opțional) indică faptul că următorii parametri nu trebuie considerați opțiuni.

Comportamentul implicit este de a utiliza o serie de unul sau mai multe spații ca separator de câmpuri, de a uni liniile folosind primul câmp al fiecărui fișier și de a afișa pentru fiecare potrivire găsită câmpul comun urmat de câmpurile rămase ale primului fișier și câmpurile de repaus ale celui de-al doilea fișier.

Opțiuni

Printre principalele opțiuni se numără:

-a 1
În plus față de liniile potrivite, include și liniile din primul fișier care nu se potrivesc în al doilea fișier din rezultat.
-a 2
Pe lângă liniile potrivite, include și liniile din al doilea fișier care nu se potrivesc în primul fișier din rezultat.
-e șir
Utilizați valoarea specificată de parametrul șir pentru câmpuri care altfel nu ar avea o valoare definită (de exemplu, când sunt utilizate opțiunile -a sau -v ).
-sau campuri
Specifică formatul rezultatului: parametrul câmpuri este o listă de intrări separate prin virgulă sau separată de spațiu care indică un câmp, în formularul număr_fișier . field_number (de exemplu 1.3 indică al treilea câmp al primului fișier, în timp ce 2.1 indică primul câmp al celui de-al doilea fișier) sau valoarea specială 0 pentru a indica câmpul ales pentru unire.
-t separator
Utilizați caracterul indicat de parametrul separator ca separator de câmp atât pentru fișierele citite, cât și pentru rezultat. Dacă nu este specificat, separatorul este o succesiune de unul sau mai multe spații.
-v 1
Săriți liniile potrivite între cele două fișiere și includeți liniile din primul fișier care nu se potrivesc în al doilea fișier din rezultat.
-v 2
Săriți liniile potrivite între cele două fișiere și includeți liniile din al doilea fișier care nu se potrivesc în primul fișier din rezultat.
-1 număr_câmp
Indică numărul câmpului din primul fișier (începând de la 1) care va fi utilizat pentru a uni cele două fișiere. Dacă nu este specificat, comportamentul implicit este acela de a utiliza primul câmp.
-2 număr_câmp
Indică numărul câmpului din al doilea fișier (începând de la 1) de utilizat pentru a uni cele două fișiere. Dacă nu este specificat, comportamentul implicit este acela de a utiliza primul câmp.

Exemple

Având două fișiere care conțin următoarele rânduri

file1.txt (sortat după al doilea câmp):

 Werner Herzog; de; 1942
Wim Wenders; de; 1945
Pedro Almodovar; es; 1949
François Truffaut; fr; 1932
Jean-Luc Godard; fr; 1930
Sergio Leone; it; 1929
Alfred Hitchcock; Regatul Unit; 1899
Stanley Kubrick; noi; 1928

file2.txt (sortat după primul câmp):

 ch; Elveția
de; Germania
es; Spania
fr; Franța
it; Italia
Regatul Unit

Fuzionează datele directorilor cu numele extinse ale țărilor lor (rețineți că Stanley Kubrick este exclus deoarece Statele Unite ale Americii nu sunt listate în al doilea dosar):

 $ join -t ";" -1 2 -2 1 file1.txt file2.txt
de; Werner Herzog; 1942; Germania
de; Wim Wenders; 1945; Germania
es; Pedro Almodovar; 1949; Spania
fr; François Truffaut; 1932; Franța
fr; Jean-Luc Godard; 1930; Franța
it; Sergio Leone; 1929; Italia
Regatul Unit; Alfred Hitchcock; 1899; Regatul Unit

Ca mai sus, dar sortează câmpurile diferit (opțiunea -o ) și nu include codul de stare:

 $ join -t ";" -1 2 -2 1 -o 2.2,1.3,1.1 file1.txt file2.txt
Germania; 1942; Werner Herzog
Germania; 1945; Wim Wenders
Spania; 1949; Pedro Almodovar
Franța; 1932; François Truffaut
Franța; 1930; Jean-Luc Godard
Italia; 1929; Sergio Leone
Regatul Unit; 1899; Alfred Hitchcock

Ca mai sus, dar include și date de linie nepotrivite din ambele fișiere ( opțiuni -a 1 și -a 2 ), folosind șirul nd (opțiunea -e ) în locul valorilor nedefinite:

 $ join -t ";" -1 2 -2 1 -o 2.2,1.3,1.1 -e "nd" -a 1 -a 2 fișier1.txt fișier2.txt
Elveția; nd; nd
Germania; 1942; Werner Herzog
Germania; 1945; Wim Wenders
Spania; 1949; Pedro Almodovar
Franța; 1932; François Truffaut
Franța; 1930; Jean-Luc Godard
Italia; 1929; Sergio Leone
Regatul Unit; 1899; Alfred Hitchcock
nd; 1928; Stanley Kubrick

La fel ca mai sus, dar afișează doar date de linie nepotrivite din ambele fișiere ( opțiuni -v 1 și -v 2 ):

 $ join -t ";" -1 2 -2 1 -o 2.2,1.3,1.1 -e "nd" -v 1 -v 2 file1.txt file2.txt
Elveția; nd; ndnd; 1928; Stanley Kubrick

Notă

  1. ^ (EN) alăturați-vă în The Open Group Base Specifications Numărul 6 IEEE Std 1003.1, ediția 2004. Adus la 15 iunie 2008 .

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT