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
Utilisez com :
comm -13 a.txt b.txt
1;tom;58;2
Les options de ligne de commande de comm
sont assez simples :
-1 supprime la colonne 1 (lignes uniques à FILE1)
-2 supprime la colonne 2 (lignes uniques à FILE2)
-3 supprime la colonne 3 (lignes qui apparaissent dans les deux fichiers)
Voici une solution simple qui, à mon avis, est meilleure que diff
:
sort file1 file2 | uniq -u
sort file1 file2
concatène les deux fichiers et les trieuniq -u
imprime les lignes uniques (qui ne se répètent pas). Il nécessite que les entrées soient pré-triées.
À l'aide des spécificateurs de format de groupe, vous pouvez supprimer l'impression des lignes inchangées et n'imprimer que les lignes modifiées pour les modifications
diff --changed-group-format="%>" --unchanged-group-format="" file1 file2
En supposant que vous souhaitiez conserver uniquement les lignes uniques au fichier 2, vous pouvez faire :
comm -13 file1 file2
Notez que le comm
La commande s'attend à ce que les deux fichiers soient dans un ordre trié.