I'd like to use 'diff' to get a both line difference between and character difference. For example, consider:
File 1
abcde abc abcccd
File 2
abcde ab abccc
Using diff -u I get:
@@ -1,3 +1,3 @@ abcde -abc -abcccd \ No newline at end of file +ab +abccc \ No newline at end of file
However, it only shows me that were changes in these lines. What I'd like to see is something like:
@@ -1,3 +1,3 @@ abcde -ab<ins>c</ins> -abccc<ins>d</ins> \ No newline at end of file +ab +abccc \ No newline at end of file
You get my drift.
Now, I know I can use other engines to mark/check the difference on a specific line. But I'd rather use one tool that does all of it.
The Linux diff command is used to compare two files line by line and display the difference between them. This command-line utility lists changes you need to apply to make the files identical.
Git has a word diff, and defining all characters as words effectively gives you a character diff. However, newline changes are ignored.
Create a repository like this:
mkdir chardifftest cd chardifftest git init echo -e 'foobarbaz\ncatdog\nfox' > file git add -A; git commit -m 1 echo -e 'fuobArbas\ncat\ndogfox' > file git add -A; git commit -m 2
Now, do git diff --word-diff=color --word-diff-regex=. master^ master
and you'll get:
Note how both additions and deletions are recognized at the character level, while both additions and deletions of newlines are ignored.
You may also want to try one of these:
git diff --word-diff=plain --word-diff-regex=. master^ master git diff --word-diff=porcelain --word-diff-regex=. master^ master
You can use:
diff -u f1 f2 |colordiff |diff-highlight
colordiff
is a Ubuntu package. You can install it using sudo apt-get install colordiff
.
diff-highlight
is from git (since version 2.9). It is located in /usr/share/doc/git/contrib/diff-highlight/diff-highlight
. You can put it somewhere in your $PATH
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With