Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am looking to compare two text files. Normally, I can just use diff to compare the two files to see the differences. This is great, except that I am more concerned with the percentage difference of the two files.

For example:

File A:
    banana
    TESTING

File B:
    TESTING

In this case, the result would be a 50% difference. I've taken a look at wdiff, and it mostly works, with the exception being that it looks at elements word-by-word (in fact, I can get the result above by doing wdiff -s filea fileb).

Does a tool exist to provide file percentage difference on a by character/ by byte level?

share|improve this question

2 Answers 2

Doing a character-by-character comparison of two text files is effectively a Levenshtein distance calculation. There isn't a common standalone program in Linux that will do this calculation, but there are some library functions (I know PHP has one) and tons of example code online for this calculation.

One other little caveat is that Levenshtein distance is strictly the number of changes between two strings, so if you're looking for a percentage, you'll need to normalize the calculated distance. Dividing by the mean of the lengths of the two strings (sizes of the text files) is a widely-used normalization.

share|improve this answer

Try piping the output if diff to the wc command. There are several options but -l will likely give you a decent count of the number of changed lines. Since diff outputs before & after lines along with some other formatting you may have to divide the result by that factor and then place that over the the result of the entire file length in lines. wc -l

share|improve this answer
1  
diff -u 0 removes context –  Lazy Badger Oct 18 '11 at 15:05

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.