Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. join (Unix) - Teknopedia
join (Unix) - Teknopedia

join è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che legge due file di testo le cui linee contengono dei dati separati in più campi, ed unisce tra loro quelle che hanno un determinato campo in comune, presentando il risultato sullo standard output. Le linee di dati di entrambi i file debbono essere prima ordinate in base al valore dei campi scelti per l'unione (ad esempio tramite il comando sort), altrimenti il risultato è indefinito.

Specificando le opzioni opportune è possibile usare join anche per ottenere le linee che non hanno corrispondenza, sia di un solo file che di entrambi, e sia in aggiunta che in sostituzione al normale output.

Sintassi

[modifica | modifica wikitesto]

La sintassi generale di join è la seguente:

join [opzioni] [--] file1 file2

I parametri file1 e file2 specificano rispettivamente i nomi del primo e del secondo file di testo di cui unire le linee. Uno di essi può essere un trattino ("-") per indicare lo standard input.

Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Il comportamento predefinito prevede di usare come separatore di campo una serie di uno o più spazi, di unire le linee usando il primo campo di ciascun file e di mostrare per ogni corrispondenza trovata il campo in comune seguito dai rimanenti campi del primo file e dai rimanenti campi del secondo file.

Opzioni

[modifica | modifica wikitesto]

Tra le opzioni principali vi sono:

-a 1
Oltre alle linee corrispondenti, include nel risultato anche le linee del primo file che non hanno corrispondenza nel secondo file.
-a 2
Oltre alle linee corrispondenti, include nel risultato anche le linee del secondo file che non hanno corrispondenza nel primo file.
-e stringa
Usa il valore indicato dal parametro stringa per i campi che altrimenti non avrebbero un valore definito (quando ad esempio sono usate le opzioni -a o -v).
-o campi
Specifica il formato del risultato: il parametro campi è una lista separata da virgole o da spazi di voci che indicano un campo, nella forma numero_file.numero_campo (ad esempio 1.3 indica il terzo campo del primo file, mentre 2.1 indica il primo campo del secondo file) oppure il valore speciale 0 per indicare il campo scelto per l'unione.
-t separatore
Usa il carattere indicato dal parametro separatore come separatore di campo sia per i file letti che per il risultato. Se non specificata, il separatore è una sequenza di uno o più spazi.
-v 1
Tralascia le linee corrispondenti tra i due file ed include nel risultato le linee del primo file che non hanno corrispondenza nel secondo file.
-v 2
Tralascia le linee corrispondenti tra i due file ed include nel risultato le linee del secondo file che non hanno corrispondenza nel primo file.
-1 numero_campo
Indica il numero del campo nel primo file (a partire da 1) da usare per unire i due file. Se non specificata, il comportamento predefinito prevede di usare il primo campo.
-2 numero_campo
Indica il numero del campo nel secondo file (a partire da 1) da usare per unire i due file. Se non specificata, il comportamento predefinito prevede di usare il primo campo.

Esempi

[modifica | modifica wikitesto]

Dati due file contenenti le linee che seguono

file1.txt (ordinato per il secondo campo):

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;uk;1899
Stanley Kubrick;us;1928

file2.txt (ordinato per il primo campo):

ch;Svizzera
de;Germania
es;Spagna
fr;Francia
it;Italia
uk;Regno Unito

Unisce i dati dei registi ai nomi estesi delle loro nazioni (notare che Stanley Kubrick è escluso in quanto gli Stati Uniti d'America non sono elencati nel secondo file):

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

Come sopra, ma ordina diversamente i campi (opzione -o) e non include la sigla dello stato:

$ 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
Spagna;1949;Pedro Almodovar
Francia;1932;François Truffaut
Francia;1930;Jean-Luc Godard
Italia;1929;Sergio Leone
Regno Unito;1899;Alfred Hitchcock

Come sopra, ma include anche i dati delle linee non corrispondenti di entrambi i file (opzioni -a 1 e -a 2), usando la stringa n.d. (opzione -e) in sostituzione dei valori non definiti:

$ join -t ";" -1 2 -2 1 -o 2.2,1.3,1.1 -e "n.d." -a 1 -a 2 file1.txt file2.txt
Svizzera;n.d.;n.d.
Germania;1942;Werner Herzog
Germania;1945;Wim Wenders
Spagna;1949;Pedro Almodovar
Francia;1932;François Truffaut
Francia;1930;Jean-Luc Godard
Italia;1929;Sergio Leone
Regno Unito;1899;Alfred Hitchcock
n.d.;1928;Stanley Kubrick

Come sopra, ma visualizza solo i dati delle linee non corrispondenti di entrambi i file (opzioni -v 1 e -v 2 ):

$ join -t ";" -1 2 -2 1 -o 2.2,1.3,1.1 -e "n.d." -v 1 -v 2 file1.txt file2.txt
Svizzera;n.d.;n.d.
n.d.;1928;Stanley Kubrick

Note

[modifica | modifica wikitesto]
  1. ^ (EN) join, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 15 giugno 2008.

Voci correlate

[modifica | modifica wikitesto]
  • cut (Unix)
  • paste (informatica)

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) join: Join lines on a common field, in GNU Coreutils manual. URL consultato il 15 agosto 2008.
V · D · M
Programmi Unix/Unix-like con interfaccia a riga di comando e comandi interni della shell unix
File systemcat · cd · chattr · chmod · chown · chgrp · cksum · cmp · cp · du · df · fdisk · file · fsck · fuser · gzip · ln · ls · lsattr · lsof · mkdir · mknod · mount · mv · pwd · rm · rmdir · split · tar · touch · umount · umask
Processiat · chroot · crontab · exit · kill · killall · nice · nohup · pgrep · pidof · pkill · ps · pstree · sleep · time · top · wait
Ambiente utentealias · env · export · finger · id · logname · mesg · newgrp · passwd · su · sudo · uname · uptime · w · wall · who · whoami · write
Elaborazione testoawk · comm · cut · diff · ed · ex · fmt · head · iconv · join · less · more · paste · sed · sort · tail · tr · uniq · vi · wc · xargs
Script di shellbasename · dirname · echo · expr · false · printf · test · true · unset
Retedig · nslookup · ifconfig · netstat · ping · rcp · rlogin · route · netcat · traceroute
Ricerchefind · grep · strings
Amministrazionedmesg · groupadd · groupdel · groupmod · mdadm · shutdown · useradd · userdel · usermod
Altribanner · bc · cal · clear · date · dd · lp · man · size · tee · tput · yes
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Join_(Unix)&oldid=106768336"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022