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.
Sintassi
[modifica | modifica wikitesto]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:
- 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
[modifica | modifica wikitesto]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
Note
[modifica | modifica wikitesto]Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) comm: Compare two sorted files line by line, in GNU Coreutils manual. URL consultato il 5 giugno 2008.