unix diff side-to-side results?

Jak mogę wykreślić wyniki uniksowego polecenia diff obok siebie, zamiast jednej różnicy po drugiej? Zobacz poniżej przykład:

    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

Chciałbym mieć coś takiego:

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
Author: 719016, 2013-06-19

10 answers

Z man diff, możesz użyć -y, aby zrobić side-by-side.

-y, --side-by-side
       output in two columns

Stąd:

diff -y /tmp/test1  /tmp/test2

Test

$ cat a                $ cat b
hello                  hello
my name                my name
is me                  is you

Porównajmy je:

$ diff -y a b
hello                                                           hello
my name                                                         my name
is me                                                         | is you
 109
Author: fedorqui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 08:53:15

Ze strony głównej icdiff :

Tutaj wpisz opis obrazka

Twój terminal może wyświetlać kolor, ale większość narzędzi diff nie wykorzystuje go dobrze. Zaznaczając zmiany, icdiff może pokazać różnice między podobnymi plikami bez wchodzenia w drogę. Jest to szczególnie pomocne w identyfikacji i zrozumieniu małych zmian w istniejących liniach.

Zamiast próbować zastąpić diff we wszystkich okolicznościach, celem icdiff jest być narzędziem, do którego możesz dotrzeć aby uzyskać lepszy obraz tego, co się zmieniło, gdy nie jest to od razu oczywiste z diff.

IMHO, jego wyjście jest znacznie bardziej czytelne niż diff -y.

 25
Author: timmfin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-21 14:14:01

Powinieneś mieć sdiff dla scalania różnic między plikami. Przeczytaj man sdiff, aby dowiedzieć się więcej.

 8
Author: Chris Seymour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 15:35:22

Możesz użyć:

sdiff  file1 file2

Lub

diff -y file1 file2

Lub

vimdiff file1 file2

Do wyświetlania obok siebie.

 7
Author: srpatcha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-26 20:40:53

Możesz po prostu użyć:

diff -y fileA.txt fileB.txt | colordiff

Pokazuje wyjście podzielone na dwa kolumienki i koloryzowane! (colordiff)

 6
Author: Jorge Fernando Matricali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-17 21:12:54

Użyj opcji -y:

diff -y file1 file2
 4
Author: rectummelancolique,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 15:33:18

Try cdiff - wyświetlanie kolorowych, przyrostowych różnic w obszarze roboczym lub ze standardowego wejścia z obsługą side by side i auto pager.

 4
Author: ymattw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 02:57:40

Możesz użyć vimdiff.

Przykład:

vimdiff file1 file2
 1
Author: Eduardo Cuomo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-19 18:26:32
diff -y --suppress-common-lines file1 file2
 0
Author: Rjazhenka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-03 12:30:40

Jeśli Twoje pliki mają niespójne użycie spacji i tabulatorów, pomocne może okazać się dołączenie argumentu -t do rozszerzenia tabulatorów:

diff -ty file1 file2
 0
Author: Bucket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-17 14:14:57