linux/hub linux/hub
cerca

#howto - Utilizzo del comando join

Scritto da il
bash

Il comando join permette di unire più file di testo in base ad un campo comune, mostrandone il risultato come output.

 Sintassi

Vediamo di seguito la sua semplice sintassi:

join file_1 file_2

basterà infatti aggiungere a seguito del comando, i file che vogliamo unire.

Utilizzo del comando

Mettiamo caso di avere due file di testo, prova-1.txt e prova-2.txt, con all'interno delle mail in dei campi ordinati (1, 2, 3 e 4):

# prova-1.txt
1 [email protected]
2 [email protected]
# prova-2.txt
3 [email protected]
4 [email protected]

In questi file le informazioni all'interno sono posizionate in modo ordinato, quindi per poterle unire ci basterà digitare:

join prova-1.txt prova-2.txt

Una volta fatto ciò, l'output sarà il seguente:

1 [email protected]
2 [email protected]
3 [email protected]
4 [email protected]

 Campi non ordinati

Mettiamo caso di avere un terzo file: prova-3.txt:

2 [email protected]
1 [email protected]

In questo caso le informazioni dentro il file sono messe in modo non ordinato, e in caso provassimo ad eseguire join prova-1.txt prova-3.txt ci darà il seguente errore:

1 [email protected]
2 [email protected]
join: prova-3.txt: is not sorted: [email protected]

Per sistemare questo problema è necessario inserire in ordine le informazioni.

 File con linee mancanti

Nel file prova-4.txt è stata rimossa la seconda linea:

1 [email protected]

Una volta che proviamo ad unire i due file, join non darà errori di alcun tipo, e continuerà ad elaborare il resto delle linee.

Se si vogliono stampare delle linee dal prova-1.txt che non possono essere abbinate ci basterà aggiungere l'opzione -a:

join -a 1 prova-1.txt prova-4.txt
1 [email protected]
2 [email protected]
3 [email protected]

 Utilizzo di diversi separatori di campo

In caso in cui le informazioni dei file sono delimitate da una virgola o da qualsiasi altro tipo di punteggiatura, possiamo usare l'opzione -t seguito dal carattere separatore per far capire al comando join cosa utilizzare come separatore di campo:

join -t, prova-1.txt prova-2.txt
1,[email protected],Prova
2,[email protected],Prova
3,[email protected],Prova
4,[email protected],Prova

 Ignorare le maiuscole

Per far sì che il comando join ignori le maiuscole presenti nel documento, possiamo utilizzare l'opzione -i come mostrato nel comando qui sotto:

join -1 1 -2 2 -i prova-1.txt prova-2.txt

Per maggiori informazioni, dubbi e chiarimenti, non esitate a fare domande sul nostro gruppo Telegram.

Leggi anche

Caricamento..