Compare dois arquivos estritamente, linha por linha, sem inserções ou exclusões

10

Eu tenho dois arquivos que contêm essencialmente um despejo de memória em um formato hexadecimal. No momento eu uso diff para ver se os arquivos são diferentes e onde estão as diferenças. No entanto, isso pode ser enganoso ao tentar determinar a localização exata (ou seja, endereço de memória) da diferença. Considere o seguinte exemplo mostrando os dois arquivos lado a lado.

file1:       file2:

0001    |    0001
ABCD    |    FFFF
1234    |    ABCD
FFFF    |    1234

Agora, diff -u mostrará uma inserção e uma exclusão, embora três linhas (locais de memória) tenham sido alteradas entre os dois arquivos:

 0001
+FFFF
 ABCD
 1234
-FFFF

Existe uma maneira fácil de comparar os dois arquivos de modo que cada linha seja comparada apenas com a mesma linha (em termos de numeração de linhas) no outro arquivo? Portanto, neste exemplo, ele deve informar que as últimas 3 linhas foram alteradas, juntamente com as linhas alteradas de file1 e file2 . A saída não precisa ser diff-style, mas seria legal se pudesse ser colorida (no momento em que eu colo a diff -u output usando sed para que possa ser facilmente adaptada).

    
por Fritz 10.06.2014 / 11:43

1 resposta

16

Esta poderia ser uma abordagem:

diff <(nl file1) <(nl file2)

Com nl number, as linhas que diff reconhecem as linhas linha por linha.

    
por 10.06.2014 / 11:59