web-dev-qa-db-fra.com

Moyen de sortie des différences entre deux fichiers (de préférence en utilisant la ligne de commande)

Je connais des outils tels que tkDiff et WinMerge et je sais comment voir la différence entre deux fichiers.

Ce que je cherche à faire, c'est de produire un rapport d'éléments dans un fichier qui ne sont pas présents dans un autre.

Par exemple:

Le fichier 1 contient:

Apple
cool
dude
flan

Le fichier 2 contient:

Apple
ball
cool
dude
elephant

Je veux produire un rapport qui contient:

ball
elephant

Ou, mieux encore, un rapport comme celui-ci:

+ball
+elephant
-flan

Quelqu'un connaît-il un outil qui peut le faire? De préférence avec des options de ligne de commande.

La fonctionnalité de rapport dans WinMerge n'est pas trop loin de ce que j'aimerais, mais il n'y a pas d'option de ligne de commande pour le faire (pour autant que je sache).

Merci d'avance.

27
the_new_mr

Vous voulez probablement tilitaire de communication Unix . versions Windows sont inclus dans gnuwin32

NOM

   comm - compare two sorted files line by line

SYNOPSIS

   comm [OPTION]... FILE1 FILE2

LA DESCRIPTION

   Compare sorted files FILE1 and FILE2 line by line.

   With  no    options,  produce  three-column  output.  Column one contains
   lines unique to FILE1, column two contains lines unique to  FILE2,  and
   column three contains lines common to both files.

   -1     suppress lines unique to FILE1

   -2     suppress lines unique to FILE2

   -3     suppress lines that appear in both files
26
The Archetypal Paul

Cela pourrait fonctionner pour vous (diff GNU):

diff -u file1 file2 | sed -n '1,2d;/^[-+]/p'
+ball
-flan
+elephant
45
potong