it-swarm-pt.tech

Maneira de gerar diferenças entre dois arquivos (de preferência usando a linha de comando)

Estou familiarizado com ferramentas como tkDiff e WinMerge e estou ciente de como ver a diferença entre dois arquivos.

O que estou procurando fazer é produzir um relatório de elementos em um arquivo que não estão presentes em outro.

Por exemplo:

O arquivo1 contém:

Apple
cool
dude
flan

O arquivo2 contém:

Apple
ball
cool
dude
elephant

Quero produzir um relatório que contenha:

ball
elephant

Ou, melhor ainda, um relatório como este:

+ball
+elephant
-flan

Alguém sabe de uma ferramenta que pode fazer isso? De preferência com opções de linha de comando.

O recurso de relatório no WinMerge não está muito longe do que eu gostaria, mas não há opção de linha de comando para fazer isso (tanto quanto eu sei).

Desde já, obrigado.

27
the_new_mr

Você provavelmente deseja o tilitário de comunicação Unix . versões do Windows estão incluídas no gnuwin32

NOME

   comm - compare two sorted files line by line

SINOPSE

   comm [OPTION]... FILE1 FILE2

DESCRIÇÃO

   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

Isso pode funcionar para você (GNU diff):

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