Reputation: 10451
How can I plot the results of a unix diff command side-to-side instead of one difference after the other? See below for an example:
diff /tmp/test1 /tmp/test2
1,4c1,2
< asfdsadf
< asdfsad
< fsaf
< fdsadf
---
> asdfsafdsf
> saf
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa
< fd
---
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa
I would like to have something like:
diff /tmp/test1 /tmp/test2
1,4c1,2
< asfdsadf > asdfsafdsf
< asdfsad > saf
< fsaf
< fdsadf
---
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa > sadf
< fd > sadf
--- > sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa
Upvotes: 207
Views: 236802
Reputation: 82
I prefer git-delta.
By default, the tool gives top and bottom comparison. Use the -s
flag for comparing side-by-side.
delta -s file1.h file2.h
Please find the package for your distribution in this installation page.
Upvotes: 0
Reputation: 1177
Try ydiff - View colored, incremental diff in workspace or from stdin with side by side and auto pager support. (Disclosure: I am the author)
Upvotes: 7
Reputation: 1125
Enhanced diff command with color, side by side and alias
Let's say the file contents are like:
cat /tmp/test1.txt
1
2
3
4
5
8
9
and
cat /tmp/test2.txt
1
1.5
2
4
5
6
7
Now comparing side-by-side
diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always /tmp/test1.txt /tmp/test2.txt
> 1.5
3 <
8 | 6
9 | 7
You can define alias to use
alias diff='diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always'
Then new diff result:
diff /tmp/test1.txt /tmp/test2.txt
> 1.5
3 <
8 | 6
9 | 7
Upvotes: 4
Reputation: 7521
If your files have inconsistent use of spaces and tabs, you may find it helpful to include the -t
argument to expand the tabs:
diff -ty file1 file2
Upvotes: 9
Reputation: 407
You can use:
sdiff file1 file2
or
diff -y file1 file2
or
vimdiff file1 file2
for side by side display.
Upvotes: 26
Reputation: 334
You can simply use:
diff -y fileA.txt fileB.txt | colordiff
It shows the output splitted in two colums and colorized! (colordiff
)
Upvotes: 10
Reputation: 290315
From man diff
, you can use -y
to do side-by-side.
-y, --side-by-side
output in two columns
Hence, say:
diff -y /tmp/test1 /tmp/test2
$ cat a $ cat b
hello hello
my name my name
is me is you
Let's compare them:
$ diff -y a b
hello hello
my name my name
is me | is you
Upvotes: 295
Reputation: 2055
From icdiff's homepage:
Your terminal can display color, but most diff tools don't make good use of it. By highlighting changes, icdiff can show you the differences between similar files without getting in the way. This is especially helpful for identifying and understanding small changes within existing lines.
Instead of trying to be a diff replacement for all circumstances, the goal of icdiff is to be a tool you can reach for to get a better picture of what changed when it's not immediately obvious from diff.
IMHO, its output is much more readable than diff -y
.
Upvotes: 69
Reputation: 85883
You should have sdiff
for side-by-side merge of file differences. Take a read of man sdiff
for the full story.
Upvotes: 13