comm

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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:

  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[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]

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

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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