Usando o diff em um arquivo longo de uma linha

20

Eu tenho um arquivo que tem apenas uma linha. Seu tamanho é de cerca de 20.000 bytes.

O arquivo foi modificado e eu queria saber onde.

Eu pensei em usar o diff, mas ele mostra a linha completa, porque ele mostra a linha que tem a diferença - mas, nesse caso, é a única linha no arquivo que tem diferenças.

Então, eu queria ver qual é a diferença.

Algum conselho?

    
por jperelli 30.10.2012 / 18:39

3 respostas

11

Supondo que há muitos espaços em branco, como no texto normal, você pode dividir o arquivo por palavras e compará-lo com uma ferramenta de comparação normal, por exemplo, meld:

tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split
    
por 22.10.2013 / 15:47
4

Eu encontraria um diff que faz diffs intra-line. Eu uso xxdiff no UNIX. Eu acho que o WinMerge faz o diff intra-line no Windows.

As outras respostas também são boas: wdiff ou quebra de partes - os limites de partes são mais fáceis de definir se os dados forem delimitados por um pipe ou uma vírgula.

    
por 30.10.2012 / 18:55
3

Se este for um problema único, criaria cópias dos arquivos com \n caracteres inseridos a cada 50 caracteres e, depois, diferenciaria essas cópias. (Escolhi 50 porque facilita a matemática de diferenciar o número da linha para o deslocamento de byte nos arquivos originais, mas pode ajustar isso para cima / para baixo com base no que eu encontrei.)

    
por 30.10.2012 / 18:43

Tags