719016
719016

Reputation: 10451

unix diff side-to-side results?

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

Answers (12)

Ranjith Kumar
Ranjith Kumar

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

enter image description here

Please find the package for your distribution in this installation page.

Upvotes: 0

ymattw
ymattw

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

ahmet
ahmet

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

Bucket
Bucket

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

srpatch
srpatch

Reputation: 407

You can use:

sdiff  file1 file2

or

diff -y file1 file2

or

vimdiff file1 file2

for side by side display.

Upvotes: 26

Rjazhenka
Rjazhenka

Reputation: 1468

diff -y --suppress-common-lines file1 file2

Upvotes: 122

Eduardo Cuomo
Eduardo Cuomo

Reputation: 19006

You can use vimdiff.

Example:

vimdiff file1 file2

Upvotes: 10

Jorge Matricali
Jorge Matricali

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

fedorqui
fedorqui

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

Test

$ 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

timmfin
timmfin

Reputation: 2055

From icdiff's homepage:

enter image description here

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

Chris Seymour
Chris Seymour

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

rectummelancolique
rectummelancolique

Reputation: 2247

Use the -y option:

diff -y file1 file2

Upvotes: 6

Related Questions