Como comparar dois arquivos para caracteres não imprimíveis

5

Para compartilhar um arquivo de configuração entre dois computadores, enviei o arquivo por e-mail para mim através da minha conta do Gmail. Quando carreguei o conf no segundo computador, o programa teve problemas para ler todas as linhas. Suspeitando de um problema com os caracteres newline (estilo vs vs unix), abri o arquivo em gvim. Eu não vi nenhum ^ M lá dentro como eu suspeitava. Um 'set list' não mostrou nada de estranho - apenas o texto do arquivo com cada linha terminada por '$' como eu esperava. Parece perfeitamente bem. Um gato do arquivo parece exatamente como eu esperava.

Fora do desespero, eu movi o arquivo para fora do caminho e manualmente redigi o conteúdo do arquivo em uma sessão vim dividida (são apenas cerca de 20 linhas). Eu executei um gvim -d nos dois arquivos, e isso não mostrou diferenças.

Eu executei o programa que usa o arquivo de configuração e, com certeza, agora ele pode ler o arquivo recém-digitado.

Eu md5sumi os dois arquivos e eles têm somas diferentes. Eu corri um diff no arquivo original e no arquivo recém-digitado e ele mostra que cada linha dos arquivos é diferente. Mas não vejo diferença na saída.

Então, estou curioso: que ferramenta posso usar para ver as diferenças entre esses dois arquivos? gvim -d não mostra diferenças, e diff mostra que elas são todas diferentes, mas a saída parece idêntica.

Se eu pudesse anexar os dois arquivos, eu faria.

    
por firebush 03.03.2013 / 04:25

2 respostas

4

Use od -c para despejar cada arquivo como hexadecimal e, em seguida, diferencie os resultados.

od -c file1 > file1.hex
od -c file2 > file2.hex
diff file1.hex file2.hex
    
por 03.03.2013 / 04:41
4

Acho que uma maneira mais fácil é apenas enviar sua saída do diff por meio de cat -t

diff file1 file2 | cat -t

Este método também funciona simplesmente com várias ferramentas de controle de versão

bzr diff | cat -t
    
por 04.04.2014 / 22:40

Tags