GNU/Linux >> Linux Esercitazione >  >> Linux

Comando "comm" in Linux con esempi

Spesso è utile confrontare le versioni dei file di testo. Per gli amministratori di sistema e gli sviluppatori di software, questo è particolarmente importante. Un amministratore di sistema potrebbe, ad esempio, dover confrontare un file di configurazione esistente con una versione precedente per diagnosticare un problema di sistema. Allo stesso modo, un programmatore ha spesso bisogno di vedere quali modifiche sono state apportate ai programmi nel tempo.

La comunicazione l'utilità visualizza un confronto riga per riga di due file ordinati. La prima delle tre colonne visualizzate elenca le righe trovate solo in file1, la seconda colonna elenca le righe trovate solo in file2 e la terza elenca le righe comuni a entrambi i file. La sintassi di base per il comando “comm” è:

# comm [options] file1 file2

Argomenti

Gli argomenti file1 e file2 sono i percorsi dei file confrontati da comm. L'uso di un trattino (–) al posto di file1 o file2 fa sì che comm legga lo standard input invece di quel file.

Opzioni

Puoi combinare le opzioni. Senza opzioni, comm produce un output a tre colonne.

Opzioni Funzione
-1 Non visualizza la colonna 1 (non visualizza le righe trovate solo in file1).
-2 Non visualizza la colonna 2 (non visualizza le righe trovate solo in file2).
-3 Non visualizza la colonna 3 (non visualizza le righe trovate in entrambi i file).
-i Confronto delle righe senza distinzione tra maiuscole e minuscole.
– -controlla-ordine Controlla l'ordine degli input, anche se tutte le linee di input sono abbinabili
– -nocheck-order Ignora l'ordine degli input
– -output-delimiter=STR Delimita le colonne con il delimitatore “STR”
– -help Visualizza un menu di aiuto
– -versione Visualizza le informazioni sulla versione del comando
Nota :Se i file non sono stati ordinati, comm non funzionerà correttamente. Le righe nella seconda colonna sono precedute da un TAB e quelle nella terza colonna sono precedute da due TAB. Lo stato di uscita indica se la comunicazione è stata completata normalmente (0) o in modo anomalo (non 0).

Esempi di utilizzo del comando "comm" in Linux

Esempio 1:utilizzo di base

Vediamo un esempio di base del comando "comm" per confrontare 2 file ordinati. I file sono come mostrato di seguito:

# cat file1
aa
bb
cc
dd
# cat file2
cc
xx
yy
zz

Il comando comm confronta i file riga per riga e restituisce tutte le righe identiche. Ad esempio:

# comm file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

L'output di questo comando viene visualizzato in tre colonne:la colonna 1 mostra le righe solo in file1 (aa, bb, dd), la colonna2 mostra tutte le righe solo in file2 (xx, yy, zz) e la colonna 3 mostra tutte le righe uguali tra due file (cc). Questo è un confronto molto più dettagliato rispetto a diff e l'output può essere schiacciante quando tutto ciò che vuoi è trovare o controllare una o due semplici modifiche. Tuttavia, può essere incredibilmente utile quando non hai molta familiarità con nessuno dei due file e vuoi vedere come si confrontano.

Esempio 2:Sopprimere le conte

comm supporta le opzioni nella forma -n dove n è 1, 2 o 3. Se utilizzate, queste opzioni specificano quali colonne sopprimere. Ad esempio, se volessimo emettere solo le righe condivise da entrambi i file, sopprimeremmo l'output delle colonne 1 e 2:

# comm -12 file1 file2
cc

Allo stesso modo, puoi visualizzare solo le righe che sono presenti solo in file1 e file2 rispettivamente usando i comandi seguenti.

# comm -23 file1 file2
aa
bb
dd
# comm -13 file1 file2
xx
yy
zz

Esempio 3:controllo dell'ordinamento in ingresso

Il comando comm fornisce 2 opzioni per controllare gli input ordinati:
1. –controlla l'ordine
2. –nocheck-order

Il –ordine di controllo l'opzione controlla che l'input sia ordinato correttamente prima del confronto. Se l'input non è ordinato, riceverai un errore come mostrato di seguito:

# comm --check-order file1 file2
aa
bb
cc
dd
	xx
comm: file 2 is not in sorted order

Mentre il –nocheck-order l'opzione consente il confronto dei file anche se l'input non è nel formato ordinato. Ad esempio:

# cat file1
aa
bb
cc
dd
# cat file2
xx
cc
yy
zz
# comm --nocheck-order file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

Esempio 4:output delimitato

comm fornisce anche un'opzione per eliminare l'output utilizzando il delimitatore fornito dall'utente. Ad esempio, invece dell'output predefinito delimitato da "tab", possiamo utilizzare un delimitatore come "|" (tubo) come mostrato nell'esempio seguente:

# comm --output-delimiter="|" file1 file2
aa
bb
||cc
dd
|xx
|yy
|zz

Diff V/s di comunicazione

comunicazione è simile a differenza in quanto entrambi i comandi confrontano due file. Ma comm può anche essere usato come uniq; comm seleziona le righe duplicate o univoche tra due file ordinati, mentre uniq seleziona le righe duplicate o univoche all'interno dello stesso file ordinato.


Linux
  1. Comando wc Linux con esempi

  2. Comando di ordinamento Linux con esempi

  3. Comando Tee Linux con esempi

  4. Comando testa di Linux con esempi

  5. Comando JQ in Linux con esempi

Comando CD Linux con esempi

Comando Linux watch con esempi

Attendi comando in Linux con esempi

Comando di esportazione Linux con esempi

Comando IP Linux con esempi

Comando di comunicazione Linux con esempi