Ekleme veya silme olmadan iki dosyayı kesinlikle satır satır karşılaştırın


14

Temelde onaltılı biçimde bir bellek dökümleri içeren iki dosya var. Şu anda dosyaların farklı olup olmadığını ve farklılıkların nerede olduğunu görmek için diff kullanıyorum. Ancak, farkın tam yerini (yani bellek adresini) belirlemeye çalışırken yanıltıcı olabilir. İki dosyayı yan yana gösteren aşağıdaki örneği düşünün.

file1:       file2:

0001    |    0001
ABCD    |    FFFF
1234    |    ABCD
FFFF    |    1234

diff -uİki dosya arasında 3 satır (bellek konumları) değişmesine rağmen, şimdi bir ekleme ve bir silme gösterecektir:

 0001
+FFFF
 ABCD
 1234
-FFFF

İki dosyayı karşılaştırmak için kolay bir yol var mı? Dolayısıyla bu örnekte son 3 satır değiştirilen gelen çizgileri ile birlikte değiştiğini bildirmelidir file1ve file2. Çıktının fark tarzı olması gerekmez, ancak renklendirilebilseydi serin olurdu (şu anda diff -uçıktıyı sedkolayca adapte edebilmek için kullanarak renklendiriyorum ).

Yanıtlar:


19

Bu bir yaklaşım olabilir:

diff <(nl file1) <(nl file2)

İle nlsayı hatları diffçizgileri tanır çizgi ile hat.


3
Bu harika, nl programını bilmiyordum. Bu unix araçları gerçekten kullanışlı, ancak birçoğu var .
Fritz

1
Ben sadece denedim, ve ne yazık ki ne olsun: ilk dosyanın her satırı, ardından ikinci dosyanın her satırı ... dosya 1 satır 1 yerine, ikinci dosya 1 satır ve ardından satır 2
Michael Hewson

@MichaelHewson İki dosyanızın ortak çizgisi yok gibi görünüyor. Bu durumda, işte böyle diffçalışır. meldİki dosyayı yan yana gösteren gui programını deneyebilirsiniz . Olduğu gibimeld <(nl file1) <(nl file2)
Fritz
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.