Estranho .. você pode tentar cmp
? Você pode querer usar a opção ' -b
' também.
página man do cmp - Compare dois arquivos byte por byte.
Esta é uma das coisas legais sobre o Unix / Linux .. tantas ferramentas:)
Eu tenho dois arquivos que parecem idênticos a mim (incluindo espaços em branco à direita e novas linhas), mas diff ainda diz que eles diferem. Mesmo quando faço uma comparação diff -y
lado a lado, as linhas parecem exatamente as mesmas. A saída do diff é o conjunto de 2 arquivos.
Alguma ideia do que está causando isso?
Estranho .. você pode tentar cmp
? Você pode querer usar a opção ' -b
' também.
página man do cmp - Compare dois arquivos byte por byte.
Esta é uma das coisas legais sobre o Unix / Linux .. tantas ferramentas:)
As diferenças podem ser causadas por finais de linha do DOS versus UNIX ou algo semelhante?
E se você hexdump
deles? Isso pode mostrar diferenças mais obviamente, por exemplo:
hexdump -C file1 > file1.hex
hexdump -C file2 > file2.hex
diff file1.hex file2.hex
Tente:
diff file1 file2 | cat -t
A opção -t
fará com que cat
mostre claramente todos os caracteres especiais - por exemplo. ^M
para CR, ^I
para tabulação.
Da página do manual (OS X):
-t Display non-printing characters (see the -v option), and display tab characters as '^I'. -v Display non-printing characters so they are visible. Control characters print as '^X' for control-X; the delete character (octal 0177) prints as '^?'. Non-ASCII characters (with the high bit set) are printed as 'M-' (for meta) followed by the character for the low 7 bits.
Meu primeiro palpite, que acaba por ser confirmado, é que os arquivos usam diferentes finais de linha. Pode haver outra diferença no espaço em branco, como a presença de espaços em branco à direita (mas você normalmente não obteria isso em muitas linhas) ou recuos diferentes (tabulações versus espaços). Use um comando que imprima espaços em branco e controle os caracteres de forma visível, como
diff <(cat -A file1) <(cat -A file2)
diff <(sed -n l file1) <(sed -n l file2)
Você pode confirmar que as diferenças só têm a ver com os términos de linha normalizando-os primeiro. Você pode ter um utilitário dos2unix
; se não, remova o caractere extra CR (^ M, \ r, \ 015) explicitamente:
diff <(tr -d '\r' <file1) <(tr -d '\r' <file2)
ou, se file1
for aquele com finais do DOS
tr -d '\r' <file1 | diff - file2
Tags diff