unix diff yan yana sonuçlar?


108

Bir unix diff komutunun sonuçlarını ardı ardına bir fark yerine yan yana nasıl çizebilirim? Örnek için aşağıya bakın:

    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

Şunun gibi bir şeye sahip olmak istiyorum:

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

vimdiff de yardımcı olabilir. İyi şanslar.
shellter

Yanıtlar:


169

İtibaren man diff, -yyan yana yapmak için kullanabilirsiniz .

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

Dolayısıyla şunu söyleyin:

diff -y /tmp/test1  /tmp/test2

Ölçek

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

Onları karşılaştıralım:

$ diff -y a b
hello                                                           hello
my name                                                         my name
is me                                                         | is you

39
Not diffkodlanmış bir maksimum çıkış genişliği (130 sütun) sahiptir. --width=$COLUMNSBunu terminal genişliğinize ayarlamak için fark seçeneğini ekleyin .
ntc2

6
Ayrıca büyük farklar için, güzel bir kaydırmalı / aranabilir fark için bunun gibi daha azını kullanın:diff -y /tmp/test1 /tmp/test2 | less
willbradley

colordiff'i kontrol edin
Vladislavs Dovgalecs

5
daha iyidiff --width=$COLUMNS --suppress-common-lines --side-by-side a b
rubo77

@ rubo77 Sekme genişletmeyi nasıl kurduğunuza bağlı olarak, çıktının sütunlarda düzgün bir şekilde diff --expand-tabs --width=$COLUMNS --suppress-common-lines --side-by-side a b
sıralanması

40

İcdiff ana sayfasından :

görüntü açıklamasını buraya girin

Terminaliniz renk görüntüleyebilir, ancak çoğu diff aracı onu iyi kullanmaz. Değişiklikleri vurgulayarak icdiff, size engel olmadan benzer dosyalar arasındaki farkları gösterebilir. Bu, özellikle mevcut hatlardaki küçük değişiklikleri belirlemek ve anlamak için yararlıdır.

Tüm koşullar için bir farkın yerini almaya çalışmak yerine, icdiff'in amacı, farktan hemen anlaşılamadığında neyin değiştiğinin daha iyi bir resmini elde etmek için ulaşabileceğiniz bir araç olmaktır.

IMHO, çıktısı çok daha okunaklı diff -y.


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

3
bu kabul edilen cevap olmalıdır, çünkü sadece orijinal soruyla -yaynı olmayan ortak hatları da gösterir diff. +1.
helix

daha iyidiff -W $COLUMNS --suppress-common-lines -y file1 file2
rubo77

partiye geç :-(. ama nedir -W $COLUMNS. Biri
açıklayabilir mi

14

Kullanabilirsiniz:

sdiff  file1 file2

veya

diff -y file1 file2

veya

vimdiff file1 file2

yan yana görüntüleme için.


2
Ben arasındaki fark nedir merak ediyorum diff -yve sdiff? Çıktıları benimle aynı görünüyor.
Hux

11

Sen olmalıdır sdiffdosya farklarının yan-yana birleştirme için. man sdiffHikayenin tamamı için bir göz atın .


2
Sistemimde (GNU / Linx) sdiffaynı şeyi yapıyor gibi görünüyor diff -yve sdiffbilgi dokümantasyonu bunun kullanımdan kaldırıldığını söylüyor: "'--output' ('-o') olmadan 'sdiff' yan yana bir fark yaratıyor. artık kullanılmıyor; bunun yerine 'diff' seçeneğinin '- yan yana' ('-y') seçeneğini kullanın. "
ntc2



6

Cdiff'i deneyin - Yan yana ve otomatik çağrı desteği ile çalışma alanında veya stdin'den renkli, artan farkı görüntüleyin.



4

Dosyalarınızda tutarsız boşluk ve sekme kullanımı varsa -t, sekmeleri genişletmek için bağımsız değişkeni dahil etmeniz yararlı olabilir :

diff -ty file1 file2

0

Renk, yan yana ve takma adla geliştirilmiş diff komutu

Diyelim ki dosya içeriği şöyle:

cat /tmp/test1.txt
1
2
3
4
5
8
9

ve

cat /tmp/test2.txt
1
1.5
2
4
5
6
7

Şimdi yan yana karşılaştırma

diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7

Kullanmak için takma ad tanımlayabilirsiniz

alias diff='diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always'

Sonra yeni fark sonucu:

diff /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.