GNU/Linux >> Linux Esercitazione >  >> Linux

Esercitazione sui comandi di accesso a Linux per principianti (5 esempi)

A volte, potresti voler combinare due file in modo che l'output abbia ancora più senso. Ad esempio, potrebbe esserci un file contenente il nome dei continenti e un altro file contenente i nomi di paesi situati in questi continenti e il requisito è combinare entrambi i file in modo che un continente e il paese corrispondente appaiano nella stessa riga.

Questo è solo un esempio:potrebbero esserci centinaia di casi d'uso del genere. Se sei su Linux e stai cercando uno strumento che possa aiutarti in queste situazioni, ti consigliamo di dare un'occhiata a unisciti , che è un'utilità della riga di comando. In questo tutorial, discuteremo questo comando usando alcuni esempi di facile comprensione.

Tieni presente che tutti gli esempi menzionati in questo articolo sono stati testati su Ubuntu 16.04 e la versione del comando join che abbiamo utilizzato è 8.25.

Comando di unione Linux

Il comando unisci ti consente di combinare righe di due file su un campo comune.

unisciti a [OPTION]... FILE1 FILE2

Ecco cosa dice la pagina man su questo strumento:

Per ogni coppia di righe di input con campi di unione identici, scrivi una riga nello standard output. Il campo 
join predefinito è il primo, delimitato da spazi vuoti. Quando FILE1 o FILE2 (non entrambi) è -, leggi lo standard input.

I seguenti esempi dovrebbero darti una buona idea di come funziona il comando join.

1. Come combinare righe di file usando il comando join?

Comprendiamo l'utilizzo di base del comando join. Supponiamo che ci siano due file (file1 e file2) che contengono le seguenti righe:

1. Asia:
2. Africa:
3. Europa:
4. Nord America:

e

1. India
2. Nigeria
3. Paesi Bassi
4. Gli Stati Uniti

Ora puoi combinare questi due file nel modo seguente:

unisciti a file1 file2

Ecco l'output del comando precedente nel nostro caso:

2. Come rendere unisci linee di stampa non abbinabili?

Per impostazione predefinita, il comando join stampa solo linee abbinabili. Ad esempio, anche se file1 contiene un campo aggiuntivo (riga numero 5):

1. Asia:
2. Africa:
3. Europa:
4. Nord America:
5. Sud America:

l'unione di file1 e file2 non produrrà alcun output diverso:

Questo perché le linee non abbinabili vengono omesse nell'output. Tuttavia, se lo desideri, puoi ancora averli nell'output utilizzando -a opzione della riga di comando. Questa opzione richiede di passare un numero di file in modo che lo strumento sappia di quale file stai parlando.

Ad esempio, nel nostro caso, il comando sarebbe:

unisciti a file1 file2 -a 1

Quindi puoi vedere che anche la riga non accoppiata dal file numero 1 (file1 nel nostro caso) è stata visualizzata nell'output.

Tieni presente che nel caso in cui desideri semplicemente stampare righe non accoppiate (ovvero, sopprimere le righe accoppiate in output), puoi farlo utilizzando -v opzione della riga di comando. Questa opzione funziona esattamente come funziona -a.

Ecco un esempio dell'opzione -v:

3. Come fornire campi di partecipazione personalizzati?

Come già sappiamo, join combina righe di file su un campo comune, che è il primo campo per impostazione predefinita. Tuttavia, se lo desideri, puoi specificare un campo diverso per ogni file. Ad esempio, considera i seguenti contenuti rispettivamente in file1 e file2.

* 1. Asia:
&2. Africa:
@ 3. Europa:
# 4. Nord America:
# 1. India
@ 2. Nigeria
&3. Paesi Bassi
* 4. Stati Uniti

Ora, se vuoi che il secondo campo di ogni riga sia il campo comune per l'unione, puoi comunicarlo allo strumento utilizzando -1 e -2 opzioni della riga di comando. Mentre il primo rappresenta il primo fascicolo, il secondo fa riferimento al secondo fascicolo. Queste opzioni richiedono un argomento numerico che fa riferimento al campo di unione per il file corrispondente.

Ad esempio, nel nostro caso, il comando sarà:

unisciti a -1 2 -2 2 file1 file2

Ed ecco l'output di questo comando:

Nota che nel caso in cui la posizione del campo comune sia la stessa in entrambi i file (come nell'esempio appena discusso, dove è 2), puoi sostituire la parte - 1 [campo] -2 [campo] nel comando con -j [campo] . Quindi nel nostro caso, il comando diventerebbe:

unisciti a -j2 file1 file2

4. Come rendere l'operazione di unione senza distinzione tra maiuscole e minuscole?

Per impostazione predefinita, l'operazione del comando join fa distinzione tra maiuscole e minuscole. Ad esempio, considera i seguenti file:

file1

A. Asia:
B. Africa:
C. Europa:
D. Nord America:

file2

a. India
b. Nigeria
c. Paesi Bassi
d. Gli Stati Uniti

Ora, se provi a unire questi due file, utilizzando il (primo) campo comune predefinito, non accadrà nulla. Questo perché il caso degli elementi di campo in entrambi i file è diverso. Per fare in modo che unisciti ignori questo problema relativo al caso, utilizza -i opzione della riga di comando.

Ecco il comando per il nostro caso:

unisciti a -i file1 file2

E lo screenshot seguente mostra il comando in azione:

5. Come fare in modo che unisciti non controlli l'input ordinato?

Per impostazione predefinita, il comando join verifica se l'input fornito è ordinato o meno e segnala in caso negativo. Ad esempio, considera il seguente output quando le informazioni in file1 non sono state ordinate:

Ora, nel caso in cui desideri che questo errore/avviso scompaia, puoi farlo utilizzando il --nocheck-order opzione. Ecco lo stesso comando, ma con questa opzione abilitata:

Quindi puoi vedere che il comando join questa volta non ha verificato l'input ordinato.

Conclusione

Unisciti potrebbe non essere uno strumento molto semplice da capire, ma una volta che ti ci sarai abituato, potrebbe farti risparmiare tempo in alcune situazioni. Abbiamo coperto la maggior parte delle opzioni della riga di comando qui. Prova questi e, una volta terminato, passa alla pagina man del comando per il resto.


Linux
  1. Tutorial sul comando cd di Linux per principianti (8 esempi)

  2. Tutorial comando Linux comm per principianti (5 esempi)

  3. Linux df Command Tutorial per principianti (8 esempi)

  4. Tutorial sul comando della data di Linux per principianti (8 esempi)

  5. Tutorial sul comando del nome host Linux per principianti (5 esempi)

Linux who Command Tutorial per principianti (8 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)