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[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.
Indice |
Uso [modifica]
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]
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]
- ^ (EN) comm in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato in data 05-06-2008.
Voci correlate [modifica]
Collegamenti esterni [modifica]
- (EN) comm: Compare two sorted files line by line in GNU Coreutils manual. URL consultato in data 05-06-2008.
|
|