İki Metin Dosyası Nasıl Karşılaştırılır ve Neyin Değiştiği Görülür

İki metin dosyasını karşılaştırmanın en hızlı yolu, her ikisini de yan yana bir diff aracına yapıştırıp onun vurguladığı satırları okumaktır. Eklenen için yeşil, kaldırılan için kırmızı ve değişen bir satır her ikisinden birer tane olarak görünür. Kurulum yok, yükleme yok, birkaç saniyede biter.

Bu, çoğu durumu kapsar. Ancak ekranda birebir aynı okunan iki dosya yine de bayt bayt farklı olabilir ve insanlar tam da burada bir öğleden sonralarını kaybederler. Bu rehber hızlı yöntemi, işlenmiş bir örneği, bilmeye değer görünmez farkları ve ChatGPT gibi bir yapay zeka sohbet botunun gerçekten nerede yardımcı olduğunu gösterir. Sadece aracı istiyorsanız, metin karşılaştırma sayfamız tüm işi tarayıcınızda yapar.

"İki metin dosyasını karşılaştırmak" gerçekte ne demektir

Bir metin dosyası, satırlara bölünmüş bir karakter dizisidir. Bunlardan ikisini karşılaştırmak, eşleşen kısımları hizalayıp eşleşmeyenleri işaretlemek demektir. Bunun klasik aracı Unix diff yardımcı programıdır ve bizimki de dahil her modern diff görüntüleyici, aynı işi daha dostça bir gösterimle yapar.

Çoğu diff aracı önce satır satır çalışır. Bu, onları uzun dosyalarda hızlı tutar ve insanların okuma biçimiyle örtüşür: kayan satırı gözden geçirir, sonra içine bakıp hangi kelimenin değiştiğine bakarsınız. Motorumuz Google'ın diff-match-patch kütüphanesi üzerine kuruludur; tek tek karakterlere bakmadan önce bir satır modu geçişi yapar, böylece bin satırlık bir günlük bile anında diff'lenir.

İki metin dosyasını karşılaştırma yolları

Tek bir doğru yöntem yoktur. Bu, dosyaların nerede olduğuna ve ne kadar kesin olmanız gerektiğine bağlıdır.

YöntemŞunun için en iyisiKesin mi?Çaba
Onları yan yana okumakBirkaç satır, bariz tek bir düzenlemeHakem sizsinizDüşük
Çevrimiçi diff aracıHızlı kontroller, her yerden yapıştırmaEvet, karakter düzeyinde kesinDüşük
Komut satırı (diff, git diff)Diskteki dosyalar, betikleme, çok büyük dosyalarEvetOrta
Kod editörü (VS Code "Karşılaştır")Editörünüzde zaten açık olan dosyalarEvetDüşük
Yapay zeka sohbet botu (ChatGPT)Değişikliğin sade dille bir özetiHayır, bir şeyi kaçırabilir veya yeniden ifade edebilirDüşük

Tek seferlik bir kontrol için bir tarayıcı aracı hızda kazanır, çünkü kurulacak bir şey yoktur ve doğrudan bir e-postadan, bir günlükten veya bir kod incelemesinden yapıştırabilirsiniz. Zaten bir depoda izlenen dosyalar için git diff tam oradadır. Yapay zeka seçeneğine geri döneceğiz, çünkü doğru iş için gerçekten kullanışlı, yanlış iş için ise bir tuzaktır.

Tarayıcınızda iki metin dosyasını karşılaştırma, adım adım

Biri size bir belgenin iki sürümünü gönderip "farkı ne?" diye sorduğunda izlenen rutin budur. Yaklaşık on saniye sürer.

  1. Metin karşılaştırma aracını açın.
  2. Orijinali sola, yeni sürümü sağa yapıştırın. Ya da bir dosyayı doğrudan diskten yüklemek için Yükle'yi kullanın.
  3. Vurguları okuyun. Eklenen satırlar yeşil, kaldırılan satırlar kırmızıdır ve değişen bir satır kırmızı-yeşil bir çift olarak görünür.
  4. Değişen satırları kaydırın. Her birinin içinde farklı olan tam kelimeler işaretlidir, böylece tüm satırı yeniden okumazsınız.
  5. İki dosya olması gerekenden çok daha farklı görünüyorsa, aşağıdaki görünmez farklar bölümüne atlayın.

İşlenmiş bir örnek

Diyelim ki bir meslektaşınız düzenlenmiş bir paragrafı geri gönderdi ve değişikliklerini kontrol etmenizi istedi. İşte sizin orijinaliniz:

The service starts at 9am on weekdays.
Refunds are processed within 14 days.
Contact [email protected] for help.

Ve işte onun sürümü:

The service starts at 8am on weekdays.
Refunds are processed within 30 days.
Contact [email protected] for help.
Priority support is available on request.

Her ikisini de diff'e bırakın; düz metinde gözden kaçırması kolay olsa da gerçek hikaye kısadır:

Gerçekte neyin değiştiği
SatırÖnceSonraDeğişiklik
Başlangıç saati9am8amDeğiştirildi
İade süresi14 days30 daysDeğiştirildi
Destek satırı[email protected][email protected]Değişiklik yok
Öncelikli destekyokPriority support is available on request.Eklendi

İki sayı kaydı ve bir cümle eklendi. İade süresinin 14'ten 30 güne katlanması, yayına girmeden önce yakalamak isteyeceğiniz türden bir düzenlemedir ve hızlı bir okumada görünmez olmaktan yalnızca tek bir karakter uzaktadır. Gözlerinize güvenmek yerine metni diff'lemenin bütün gerekçesi budur.

İnsanları tökezleten görünmez farklar

Bazen bir diff, ekranda birebir aynı görünen iki dosyayı tamamen farklıymış gibi gösterir. Sebep neredeyse her zaman göremediğiniz bir karakterdir. İşte her zamanki şüpheliler.

Görünmez farkNereden gelirNe yapmalı
Satır sonları: CRLF vs LFBir dosya Windows'ta, diğeri macOS veya Linux'ta kaydedildiSatır sonlarını normalleştirin; bkz. yeni satır kuralları
Sondaki boşluklarBir satırın sonunda bırakılmış boşluk veya sekmelerSondaki boşlukları kırpın veya aracınız yapabiliyorsa yok sayın
Bir bayt sıra işareti (BOM)Bir editör ilk satıra görünmez bir işaret eklediBOM olmadan UTF-8 olarak kaydedin
Sekmeler vs boşluklarFarklı editörler veya girinti ayarlarıBirini seçip dönüştürün; ekranda ikisi de aynı görünür
Metin kodlamasıBir dosya UTF-8, diğeri Latin-1, bu yüzden aksanlı karakterler baytlarda farklıdırHer ikisini de yeniden UTF-8 olarak kaydedin
Bölünemez boşluklarBir web sayfasından veya bir kelime işlemciden yapıştırılmışOnları bulup normal boşluklarla değiştirin

En sert ısıran şey satır sonlarıdır. Bir Windows dosyası her satırın sonunda bir satır başı artı bir satır beslemesi (CRLF) kullanır; bir Mac veya Linux dosyası yalnızca bir satır beslemesi (LF) kullanır. Her ikisini de aynı editörde açın, aynı görünürler, ancak her bir satır bayt düzeyinde farklıdır, bu yüzden naif bir diff bir yılbaşı ağacı gibi ışıldar. Tüm dosyanız değişmiş olarak görünüyorsa, önce bunu kontrol edin.

ChatGPT iki dosyayı karşılaştırabilir mi?

Evet ve pek çok kişi artık tam olarak bunu yapıyor: iki sürümü ChatGPT'ye (veya başka bir yapay zeka asistanına) yapıştırıp "ne değişti?" diye soruyor. Kısa dosyalar için iyi çalışır ve size düz bir diff'in veremeyeceği bir şey verir: sıradan dille bir özet. "İade süresi 14'ten 30 days'e çıktı ve bir öncelikli destek satırı eklendi" ifadesi, meşgul bir okuyucu için genellikle bir kırmızı ve yeşil duvarından daha yararlıdır.

İşin püf noktası kesinliktir. Bir dil modeli bir diff algoritması değildir. Tek karakterlik bir değişikliği kaçırabilir, özetlerken bir satırı sessizce yeniden ifade edebilir ya da uzun bir dosyada yer bulamayıp ortayı atlayabilir. Ayrıca metninizi üçüncü bir tarafa vermek anlamına gelir ki bunu hassas herhangi bir şey için istemeyebilirsiniz. Yani bu iki tür araç rakip değil, birbirini tamamlayıcıdır.

İyi bir iş akışı: dosyaları önce deterministik bir diff aracından geçirerek değişikliklerin kesin, karakter düzeyinde doğru listesini alın, sonra o kısa listeyi bir yapay zeka sohbet botuna yapıştırıp etkiyi sade dille açıklamasını isteyin. İkisinden birinin diğerinin işini yapmasına güvenmeden, bir diff'in doğruluğu ile bir özetin okunabilirliğini elde edersiniz.

Komut satırında dosyaları karşılaştırma

Dosyalar zaten diskteyse, yerleşik diff komutu tek satırdır:

diff old.txt new.txt

Git'in kullandığı birleşik biçim için -u ekleyin veya boşluk farklarını yok saymak için -w ekleyin. Bir depodaki dosyalar için git diff old.txt new.txt aynısını renkli ve kelime düzeyi vurgulamayla yapar. Tarayıcı aracı bunun terminalsiz sürümüdür: yapıştır, oku, bitti.

İlgili araçlar

Düz metin, karşılaştırdığınız tek şey nadiren olur. Dosyalarınız yapılıysa, biçime duyarlı bir görünüm daha iyi okunur: JSON karşılaştırma yeniden sıralanmış anahtarları ve girinti gürültüsünü ele alır ve CSV karşılaştırma satırları ve sütunları hizalar. Diff'lemeden önce dağınık bir listeyi temizlemek, yinelenen satırları kaldırma ve satırları sıralama araçlarının işidir.

Sıkça sorulan sorular

Metin dosyalarını çevrimiçi karşılaştırmak onları bir yere yükler mi?
comparetext.org'da karşılaştırma tarayıcınızda çalışır. Her iki dosya da kendi makinenizdeki JavaScript tarafından diff'lenir, bu yüzden bilerek Kaydet veya Paylaş'a tıklamadıkça hiçbir şey bir sunucuya gönderilmez. Bu, taslaklar, sözleşmeler, yapılandırma ve her tuş vuruşunda yükleme yapan bir siteye yapıştırmak istemeyeceğiniz her şey için güvenli kılar.
İki metin dosyam neden her satırı farklı gösteriyor?
Neredeyse her zaman satır sonlarıdır. Bir dosya Windows'ta (CRLF), diğeri macOS veya Linux'ta (LF) kaydedilmiştir, bu yüzden birebir aynı görünseler de her satır bayt düzeyinde farklıdır. İlk satırdaki gizli bir bayt sıra işareti (BOM) ya da sekmelere karşı boşluklar da aynısını yapabilir. Satır sonlarını normalleştirin, her ikisini de yeniden UTF-8 olarak kaydedin, sonra tekrar diff'leyin.
İki metin dosyasını hiçbir şey kurmadan karşılaştırabilir miyim?
Evet. Metin karşılaştırma aracını açın, bir dosyayı sola, diğerini sağa yapıştırın veya diskten yüklemek için Yükle'yi kullanın. Diff anında, doğrudan tarayıcıda, değişen satırlar vurgulanmış olarak görünür. İndirilecek bir şey ve oluşturulacak bir hesap yoktur.
ChatGPT benim için iki dosyayı karşılaştırabilir mi?
Evet ve kısa dosyalarda neyin değiştiğinin sade dille bir özeti için kullanışlıdır. Ancak bir dil modeli bir diff algoritması değildir: küçük bir düzenlemeyi kaçırabilir, özetlerken bir satırı yeniden ifade edebilir veya uzun bir dosyanın ortasını atlayabilir. Kesin, karakter düzeyinde doğru bir karşılaştırma için bir diff aracı kullanın, sonra kelimelerle açıklanmasını isterseniz sonucu bir yapay zekaya verin.
İki dosyayı nasıl karşılaştırıp boşlukları yok sayarım?
Komut satırında diff -w old.txt new.txt boşluk farklarını yok sayar ve diff -b boşluk miktarındaki değişiklikleri yok sayar. Bir tarayıcıda, yapıştırmadan önce sondaki boşlukları kırpın ve satır sonlarını normalleştirin, çünkü bir diff'i en sık dağıtan boşluk değişiklikleri bunlardır. Amaç, yalnızca anlamı değiştiren düzenlemeleri bırakmaktır.
Metin karşılaştırmakla kod karşılaştırmak arasındaki fark nedir?
Mekanik aynıdır: her ikisi de eşleşen satırları hizalar ve geri kalanı işaretler. Fark, gerçek bir değişiklik olarak neyin sayıldığıdır. Düz metinde, yalnızca bir kelime kaydığında yeniden akıtılmış bir paragraf büyük bir düzenleme gibi görünebilir. Kodda, girinti ve taşınmış bir işlev önemlidir. JSON karşılaştırma gibi biçime duyarlı bir görünüm veya dile duyarlı bir editör, yapılı dosyalarda bu gürültüyü azaltır.

Denemeye hazır mısınız? İki dosyanızı metin karşılaştırma aracına yapıştırın ve neyin değiştiğini görün.