alătură-te (Unix)
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ă
- ^ (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
- (EN) join: Alăturați liniile pe un câmp comun în manualul GNU Coreutils. Adus 15-08-2008 .