Comment faire pour afficher seulement les différentes lignes à l'aide de diff (bash)
Comment puis-je afficher seulement les différentes lignes à l'aide de diff dans un fichier séparé?
Par exemple, le numéro de fichier 1 contient la ligne:
1;john;125;3
1;tom;56;2
2;jack;10;5
Un numéro de dossier 2 contient les lignes suivantes:
1;john;125;3
1;tom;58;2
2;jack;10;5
Comment faire dans ce qui suit se produira?
1;tom;58;2
Ce qui doit arriver à
1;tom;56;2
? Si le deuxième fichier de toujours avoir la priorité? Ce qui devrait se produire si le premier fichier contient une ligne de pas dans le second fichier?OriginalL'auteur frops | 2012-04-30
Vous devez vous connecter pour publier un commentaire.
a.txt:
b.txt:
Utilisation comm:
Les options de ligne de commande pour
comm
sont assez simple:Oui, remarqué que j'ai pris le premier fichier pour avoir la priorité. Ont mis à jour le post
"On remarque que le comm de commande s'attend à ce que les deux fichiers dans l'ordre de tri."
Notez également que la comm n'implique pas
uniq
donc, dans le cas où une ligne est présente plusieurs fois dans fichier1 et une seule fois dans fichier2, chaque occurrence dans fichier1 sera répertorié comme une différence parcomm
(ce qui n'est bien sûr...).OriginalL'auteur Anders Lindahl
En supposant que vous souhaitez ne conserver que les lignes uniques de fichier 2 que vous pouvez faire:
Noter que le
comm
commande s'attend à ce que les deux fichiers dans l'ordre de tri.OriginalL'auteur codaddict
En utilisant le groupe de spécificateurs de format, vous pouvez supprimer l'impression des lignes inchangées et imprimer uniquement les lignes modifiées pour changé
diff --changed-group-format="%>" --unchanged-group-format="" file1 file2
OriginalL'auteur miroB