İ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 iyisi | Kesin mi? | Çaba |
|---|---|---|---|
| Onları yan yana okumak | Birkaç satır, bariz tek bir düzenleme | Hakem sizsiniz | Düşük |
| Çevrimiçi diff aracı | Hızlı kontroller, her yerden yapıştırma | Evet, karakter düzeyinde kesin | Düşük |
Komut satırı (diff, git diff) | Diskteki dosyalar, betikleme, çok büyük dosyalar | Evet | Orta |
| Kod editörü (VS Code "Karşılaştır") | Editörünüzde zaten açık olan dosyalar | Evet | Düşük |
| Yapay zeka sohbet botu (ChatGPT) | Değişikliğin sade dille bir özeti | Hayır, bir şeyi kaçırabilir veya yeniden ifade edebilir | Düşü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.
- Metin karşılaştırma aracını açın.
- 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.
- 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.
- 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.
- İ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:
| Satır | Önce | Sonra | Değişiklik |
|---|---|---|---|
| Başlangıç saati | 9am | 8am | Değiştirildi |
| İade süresi | 14 days | 30 days | Değiştirildi |
| Destek satırı | [email protected] | [email protected] | Değişiklik yok |
| Öncelikli destek | yok | Priority 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 fark | Nereden gelir | Ne yapmalı |
|---|---|---|
| Satır sonları: CRLF vs LF | Bir dosya Windows'ta, diğeri macOS veya Linux'ta kaydedildi | Satır sonlarını normalleştirin; bkz. yeni satır kuralları |
| Sondaki boşluklar | Bir satırın sonunda bırakılmış boşluk veya sekmeler | Sondaki 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 ekledi | BOM olmadan UTF-8 olarak kaydedin |
| Sekmeler vs boşluklar | Farklı 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ır | Her ikisini de yeniden UTF-8 olarak kaydedin |
| Bölünemez boşluklar | Bir 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.txtboşluk farklarını yok sayar vediff -bboş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.