comm (abbreviazione dalla lingua inglese di common, in comune) è 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 sono ordinate e mostra sullo standard output le linee in comune e le linee presenti solo in uno dei due file. È un tipo di filtro.

Per ordinare i file da usare con comm si può usare il comando sort.

In generale, per trovare le differenze tra due file di testo si può usare il comando diff.

SintassiModifica

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 doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

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.

EsempiModifica

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

NoteModifica

  1. ^ (EN) comm, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 5 giugno 2008.

Voci correlateModifica

Collegamenti esterniModifica

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