229 votes

Comment afficher les lignes en commun (reverse diff)?

J'ai une série de fichiers texte pour lesquels j'aimerais connaître les lignes communes plutôt que les lignes qui sont différentes entre eux. La ligne de commande unix ou windows est très bien.

foo:

 linux-vdso.so.1 =>  (0x00007fffccffe000)
libvlc.so.2 => /usr/lib/libvlc.so.2 (0x00007f0dc4b0b000)
libvlccore.so.0 => /usr/lib/libvlccore.so.0 (0x00007f0dc483f000)
libc.so.6 => /lib/libc.so.6 (0x00007f0dc44cd000)
 

bar:

 libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0x00007f716ae22000)
libkio.so.5 => /usr/lib/libkio.so.5 (0x00007f716a96d000)
linux-vdso.so.1 =>  (0x00007fff737ff000)
 

Donc, étant donné que ces deux fichiers au-dessus de la sortie de l'utilitaire souhaité ressemblent à file1:line_number, file2:line_number == matching text (juste une suggestion, peu m'importe la syntaxe):

 foo:1, bar:3 == linux-vdso.so.1 =>  (0x00007fffccffe000)
 

Merci.

265voto

Daniel Lew Points 39063

Sur * nix, vous pouvez utiliser comm.

Notez également qu’il est important de trier les fichiers avant d’utiliser comm, tel que mentionné dans les pages de manuel.

37voto

ChristopheD Points 38217

A été demandé ici avant : http://stackoverflow.com/questions/373810/unix-command-to-find-lines-common-in-two-files

Vous pouvez également essayer avec perl (crédit va ici)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X