Comm
# Comm

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, 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.

## Sintassi

La sintassi generale di comm è la seguente:

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:

* le linee presenti solo nel primo file;
* le linee presenti solo nel secondo file.
* 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:

file2.txt:

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):

Mostra solo le linee presenti in entrambi i file:

Mostra le linee presenti solo nel primo file:

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

