1a linha: a
significa adicionado, d
para excluído e c
para alterado. Os números de linha do arquivo original aparecem antes dessas letras e as do arquivo modificado aparecem após a letra.
2a linha: a linha com <
é do arquivo 1 e é diferente do arquivo 2.
3ª linha é um divisor.
4a linha: a linha com >
é do arquivo 2 e é diferente do arquivo 1.
(Se você já viu =
, significa que as linhas são as mesmas em ambos os arquivos)
E o seu problema pode ser espaços em branco ou outros caracteres legíveis não humanos: esses também desencadeiam uma diferença.
Existem algumas opções para manipular a saída.
Exemplo:
rinzwind@discworld:~$ more 1 test test2 test3 rinzwind@discworld:~$ more 2 test test2 test3
formato contextualizado:
rinzwind@discworld:~$ diff -c 1 2 *** 1 2011-08-13 17:05:40.433966684 +0200 --- 2 2011-08-13 17:11:24.369966629 +0200 *************** *** 1,3 **** test ! test2 test3 --- 1,3 ---- test ! test2 test3
Um "!" representa uma mudança entre linhas que correspondem nos dois arquivos. Um "+" representa a adição de uma linha, enquanto um espaço em branco representa uma linha inalterada. No início do patch é a informação do arquivo, incluindo o caminho completo e um carimbo de hora. No início de cada grupo, os números de linha que se aplicam à alteração correspondente nos arquivos. Um intervalo de números que aparece entre conjuntos de três asteriscos se aplica ao arquivo original, enquanto conjuntos de três traços se aplicam ao novo arquivo. Os intervalos do grupo especificam os números de linha inicial e final no respectivo arquivo.
Expandindo o comentário de Lekensteyn sobre o formato unificado:
rinzwind@discworld:~$ diff -u 1 2 --- 1 2011-08-13 17:05:40.433966684 +0200 +++ 2 2011-08-13 17:11:24.369966629 +0200 @@ -1,3 +1,3 @@ test -test2 +test2 test3
O formato começa com o mesmo cabeçalho de duas linhas do formato de contexto, exceto que o arquivo original é precedido por "---" e o novo arquivo é precedido por "+++". A seguir, um ou mais pedaços de alteração que contêm as diferenças de linha no arquivo. As linhas contextuais inalteradas são precedidas por um caractere de espaço, as linhas de adição são precedidas por um sinal de mais e as linhas de exclusão são precedidas por um sinal de menos.
Algumas opções úteis:
-b
Ignore alterações na quantidade de espaço em branco.
-w
Ignora todo o espaço em branco.
-B
Ignora todas as linhas em branco.
-y
output em 2 colunas.