comm (abbreviazione dall'inglese common, in comune) è un comando dei sistemi operativi Unix e Unix-like che, dati due file di testo le cui linee sono ordinate, mostra sullo standard output le linee in comune e le linee presenti solo in uno dei due file. È un tipo di filtro.

Uso

La sintassi generale di comm è la seguente:

 comm [opzioni] file1 file2

I parametri file indicano i nomi dei file da esaminare, che devono essere già ordinati. Uno dei due parametri può anche essere un trattino ("-"), indicando in quel caso che vanno letti i dati dallo standard input.

Il comportamento predefinito prevede di un formato di output su tre colonne, che rispettivamente contengono:

  1. le linee presenti solo nel primo file;
  2. le linee presenti solo nel secondo file.
  3. le linee presenti in entrambi i file;

Tra le opzioni vi sono:

  • -1 – Non visualizza la colonna con le linee presenti solo nel primo file.
  • -2 – Non visualizza la colonna con le linee presenti solo nel secondo file.
  • -3 – Non visualizza la colonna con le linee comuni a entrambi i file.

Esempi

Partendo due file di testo contenenti le seguenti linee (ordinate):

file1.txt:

arancio
banana
carota

file2.txt:

arancio
banana
banana
zucchine

Mostra le linee presenti in solo uno dei due file e quelle presenti in entrambi (notare che banana è riportata sia come presente in entrambi i file che come presente solo nel secondo file, perché è ripetuta più volte nel secondo file):

$ comm file1.txt file2.txt
		arancio
		banana
	banana
carota
	zucchine


Mostra solo le linee presenti in entrambi i file:

 $ comm -12 file1.txt file2.txt
 arancio
 banana


Mostra le linee presenti solo nel primo file:

 $ comm -23 file1.txt file2.txt
 carota


Mostra le linee presenti solo nel secondo file (banana viene indicato perché si riferisce alla seconda ripetizione, che non è presente nel primo file):

 $ comm -13 file1.txt file2.txt 
 banana
 zucchine

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica