Existe uma ferramenta para medir a porcentagem de diferença de arquivo?

4

Estou procurando comparar dois arquivos de texto. Normalmente, posso usar apenas diff para comparar os dois arquivos para ver as diferenças. Isso é ótimo, exceto que estou mais preocupado com a diferença percentual dos dois arquivos.

Por exemplo:

File A:
    banana
    TESTING

File B:
    TESTING

Nesse caso, o resultado seria uma diferença de 50%. Eu dei uma olhada no wdiff , e ele funciona principalmente, com a exceção de que ele olha para elementos palavra por palavra (na verdade, eu posso obter o resultado acima fazendo wdiff -s filea fileb ).

Existe uma ferramenta para fornecer diferença percentual de arquivo em um caractere por byte?

    
por NT3RP 17.10.2011 / 21:16

2 respostas

2

Fazer uma comparação caractere por caractere de dois arquivos de texto é efetivamente um cálculo Distância de Levenshtein . Não há um programa autônomo comum no Linux que faça esse cálculo, mas existem algumas funções de biblioteca (eu sei que o PHP tem uma) e toneladas de código de exemplo online para esse cálculo.

Outra pequena advertência é que a distância de Levenshtein é estritamente o número de mudanças entre duas strings, então se você está procurando por uma porcentagem, você precisará normalizar a distância calculada. Dividir pela média dos comprimentos das duas strings (tamanhos dos arquivos de texto) é uma normalização amplamente usada.

    
por 18.10.2011 / 13:58
0

Tente canalizar a saída, se diff, para o comando wc . Existem várias opções, mas -l provavelmente lhe dará uma contagem decente do número de linhas alteradas. Desde que o diff é apresentado antes de & depois de linhas junto com alguma outra formatação você pode ter que dividir o resultado por aquele fator e então colocar isto em cima do resultado do comprimento de arquivo inteiro em linhas. wc -l

    
por 17.10.2011 / 21:32