a.txt:
1;john;125;3
1;tom;56;2
2;jack;10;5
b.txt:
1;john;125;3
1;tom;58;2
2;jack;10;5
Usa comm:
comm -13 a.txt b.txt
1;tom;58;2
Le opzioni della riga di comando a comm
sono piuttosto semplici:
-1 elimina la colonna 1 (righe univoche per FILE1)
-2 elimina la colonna 2 (righe univoche per FILE2)
-3 sopprime la colonna 3 (righe che appaiono in entrambi i file)
Ecco una soluzione semplice che penso sia migliore di diff
:
sort file1 file2 | uniq -u
sort file1 file2
concatena i due file e li ordinauniq -u
stampa le linee univoche (che non si ripetono). Richiede che l'input sia preordinato.
Usando gli identificatori di formato di gruppo puoi sopprimere la stampa delle righe non modificate e stampare solo le righe modificate per quelle modificate
diff --changed-group-format="%>" --unchanged-group-format="" file1 file2
Supponendo che tu voglia conservare solo le righe univoche del file 2 puoi fare:
comm -13 file1 file2
Nota che il comm
comando si aspetta che i due file siano ordinati.