Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

newline-ignoring diff / diff across multiple lines / reflow-ignoring diff

Tags:

diff

word-diff

Does anybody know of a diff-like tool that can show me the changes between two text files, but ignore changes in whitespace including newlines?

Here's an example:

the quick brown fox jumped over the lazy bear.  the quick brown fox
jumped over the lazy bear.  the quick brown fox jumped over the lazy
bear.  the quick brown fox jumped over the lazy bear.
quick brown fox jumped over the lazy bear.  the quick brown fox jumped
over the lazy bear.  the quick brown fox jumped over the lazy bear.
the quick brown fox jumped over the lazy bear.

All I did was delete one word and reflow it, but "diff -b" detects a change on every line (as it should; I'm not saying this is a bug in diff). But for large LaTeX files this is a major problem; change one word in a long paragraph and the diff you get back is basically useless.

By the way, I'm aware that this requires way more computational power than the usual lines-are-atomic diff. I'm only doing this on small human-generated files and am happy to wait a long time if I have to.

like image 325
Adam Avatar asked Apr 09 '10 03:04

Adam


1 Answers

wdiff does word-by-word alignment.

For an easy-to-read display in a terminal, run

 wdiff -al <file1> <file2> | less

This will show (at least on my system) insertions in <file2>boldfaced and deletions from <file2> underlined.

like image 142
Zoë Peterson Avatar answered Sep 30 '22 18:09

Zoë Peterson