Diff agindo muito estranhamente, reporta blocos longos como deletados quando bits curtos em todo o bloco foram alterados, deletados ou adicionados

1

Desculpas pelo título gore, eu não posso pensar em uma maneira decente de explicar o que está acontecendo sem um monte de palavras.

Eu tenho dois arquivos, ambos são saídas de um código que eu coloquei em cut para ver apenas os primeiros 26 caracteres de cada linha. Ambos os arquivos são listas de parâmetros que o código mediu, como "seção transversal total" ou "tempo de vida de nêutrons", assim como as opções que o código usou como "MPI_TASKS" ou "COMPILE_DATE" para que arquivo1 se parecesse com:

param1  
param2
...
param2000

O File2 parece basicamente o mesmo, mas muitos dos parâmetros são excluídos ou alterados, e alguns diferentes são adicionados.

Em vez de informar onde essas alterações / adições / exclusões ocorrem, diff informa que as linhas 12 a 1750 de file1 foram excluídas e, em seguida, encontra cerca de 300 linhas de diferenças para o restante dos arquivos. Mesmo nessas diferenças, ele só relata uma mudança em talvez 50 delas, o resto é relatado como adições / exclusões.

Estou realmente muito confuso e não tenho idéia do porquê diff está agindo dessa maneira. Eu tentei usar algumas opções como -aBCHw .

Existe um utilitário melhor que eu possa usar com isso? A utilidade cut está causando problemas?

    
por Lou 25.07.2018 / 00:45

1 resposta

1

Por padrão, diff assume alguns contexto ao redor de cada parte da diferença, chamada de chunk . Se você reduzir o contexto (usando o valor opcional para a opção -C ), reduz o tamanho do fragmento e reduz a probabilidade de relatar pedaços grandes (sobrepostos) como uma grande diferença.

    
por 25.07.2018 / 00:51

Tags