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.

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

Note

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

Voci correlate