Eu tenho dois arquivos que parecem idênticos para mim (incluindo espaços em branco à direita e novas linhas), mas o diff ainda diz que são diferentes. Mesmo quando faço uma diff -y
comparação lado a lado, as linhas são exatamente iguais. A saída do diff são os 2 arquivos inteiros.
Alguma idéia do que está causando isso?
sed -n l filename
. Se isso não ajudar, adicione um exemplo de dados e faça adiff
saída aqui.file
comando irá sugerir-lhe sobre o conteúdo do arquivo, incluindo coisas comoASCII text, with CRLF line terminators
vsASCII text
.Respostas:
Estranho .. você pode tentar
cmp
? Você também pode usar a-b
opção ' '.página de manual do cmp - Compare dois arquivos byte por byte.
Essa é uma das coisas legais do Unix / Linux .. tantas ferramentas :)
fonte
-b
é paraignore changes in the amount of white space
.As diferenças podem ser causadas por terminações de linha DOS vs. UNIX ou algo semelhante?
E se você
hexdump
eles? Isso pode mostrar diferenças mais obviamente, por exemplo:fonte
Experimentar:
A
-t
opção fará comcat
que os caracteres especiais sejam mostrados claramente - por exemplo,^M
para CR,^I
para tab.Na página do manual (OS X):
fonte
Meu primeiro palpite, que acaba de ser confirmado, é que os arquivos usam diferentes finais de linha. Pode haver alguma outra diferença no espaço em branco, como a presença de espaço em branco à direita (mas você normalmente não conseguiria isso em muitas linhas) ou indentação diferente (guias versus espaços). Use um comando que imprima espaços em branco e controle caracteres de forma visível, como
Você pode confirmar que as diferenças só têm a ver com terminações de linha normalizando-as primeiro. Você pode ter um
dos2unix
utilitário; caso contrário, remova o caractere extra de CR (^ M, \ r, \ 015) explicitamente:ou, se
file1
é aquele com terminações do DOSfonte