Metin Karşılaştır nedir?
Metin Karşılaştır, iki metni alıp aralarında tam olarak neyin değiştiğini gösteren çevrimiçi bir araçtır. Eski sürümü bir tarafa, yenisini diğerine yapıştırdığınızda farklar renkli olarak öne çıkar. Yeşil eklenen, kırmızı çıkarılandır.
Düz metin olan her şeyle çalışır: paragraflar, kod parçacıkları, yapılandırma dosyaları, sözleşme maddeleri, çeviriler. Aynı kalan satırlar nötr durur, böylece göz doğrudan değişene kayar.
Masaüstü aracı açmak istemediğiniz ama tek tıkla kesin sonuç istediğiniz zamanlar için. Kayıt yok, yükleme yok, neyi karşılaştırdığınıza dair iz yok.
Ne yapar
Compare Text iki metni alır, eklenenleri yeşil, çıkarılanları kırmızı renkle vurgular. Karakter karakter çalışır, dolayısıyla eksik bir virgül veya yeniden adlandırılmış bir değişken net görünür. Motor, Google'ın diff-match-patch kütüphanesidir (Apache 2.0). Bu genel tekniğin adı diff, ve altta yatan problem (iki dize arasındaki en küçük düzenleme kümesini bulmak) klasik en uzun ortak alt dizi (longest common subsequence) problemine indirgenir.
Motor hem doğal dili hem kodu eşit iyi ele alır — belge düzenleyicilerin sürüm geçmişini çalıştıran türden bir yaklaşımla. Düz yazı yerine yapısal veri karşılaştırıyorsanız, JSON diff aracımız önce iki tarafı parse eder ve anahtar sırasını yok sayar: farklı problem, farklı araç.
Sunucu yok. Metniniz JavaScript tarafından FileReader API ile okunur, karşılaştırılır ve sonuç sayfaya çizilir. Sekmeyi kapatınca uçar gider.
İki metni karşılaştırma
Üç adım. Yazarken diff anında güncellenir, karşılaştırma düğmesi yok.
- 1
Orijinali ekle
Sol panele yapıştırın veya .txt/.md dosyası için Yükle'ye tıklayın. Örnek kısa bir örnek metin yerleştirir.
- 2
Yeni sürümü ekle
Sağa yapıştırın veya yükleyin. Her iki panelde de içerik olduğunda silmeler solda kırmızı, eklemeler sağda yeşil görünür.
- 3
Değişiklikleri inceleyin
Her iki tarafta da kaydırma senkron olur. Başlık tespit edilen değişiklik sayısını gösterir. Metinlerden birini Kopyala veya İndir ile saklayın.
Ne zaman işe yarar
Bir sözleşmedeki redline değişikliklerini yakalama
Bir tedarikçi sözleşmesinin V1'ini sola, redline V2'yi sağa yapıştırın. Sessizce değişen tazminat, ödeme ve fesih maddeleri hemen yüzeye çıkar. Karşı taraf değişiklik takibi açılmadan temiz bir kopya gönderdiğinde işe yarar.
Taslakları ve düzeltmeleri okuma
Taslağınızı editörün gözden geçirilmiş sürümüyle karşılaştırın, ya da blog yazınızı düzeltme öncesi ve sonrası. Değişen her sözcük orada; düşürülen cümleyi bulmak için yazıyı baştan sona yeniden okumak zorunda kalmazsınız.
Bir çeviri turunu gözden geçirme
Orijinal bir yanda, çevirmenin revizyonları diğerinde. Hangi deyimlerin yeniden yazıldığını ve editörün hangi noktalarda düz çeviriye karşı çıktığını görürsünüz. Gözden geçirene güveniyorsanız belgenin tamamını ikinci kez okumaktan kurtarır.
Yapılandırma dosyalarını karşılaştırma
nginx.conf, systemd unit dosyaları, .env şablonları. İki sürüm, yan yana, saniyeler içinde. Her iki dosya zaten bir sohbetten panonuzdaysa terminalde diff açmaktan hızlıdır.
Log dosyası anlık görüntülerini karşılaştırma
Dünün dağıtım logu ile bugünkü, ya da aynı işin iki CI çalıştırmasındaki çıktısı. Sabit satırlar geri plana çekilir ve yeni hata örüntüsü öne çıkar. Birkaç MB'lık loglarda önce grep ile ilgili alt kümeye daraltın.
Metin diff hızlı referans
Bu aracın en sık ortaya çıkardığı sınır durumlar ve nedenleri.
| Konu | Bu araç ne yapar |
|---|
| Satır sonları | LF, CRLF ve CR ayrı karakterlerdir. Bir Windows dosyası (CRLF) ile bir Unix dosyasının (LF) karşılaştırılması her satır farklıymış gibi görünür. Her iki kaynakta LF'ye normalleştirin ya da karşılaştırmadan önce CR'leri çıkarın. |
|---|
| Sondaki boşluklar | Gerçek bir fark olarak gösterilir: vurgu görünür karakterin ötesine uzar. YAML veya CSV'de parser'ları sessizce bozan sonda boşlukları yakalamak için faydalıdır. |
|---|
| Unicode normalleştirmesi | Önceden bestelenmiş é (U+00E9) ile yazılan café tek bir karakterdir; ayrıştırılmış biçimi e + birleşen aksan (U+0301) iki karakterdir. Aynı görünür ama farklı diff verirler. Eşleşmeleri için String.prototype.normalize() ile Unicode Normalization Form C uygulayın. |
|---|
| Eşleşme inceliği | Altta karakter düzeyinde, mümkün olduğunda sözcük sınırlarında değişiklikleri gruplayan bir anlamsal temizleme geçişi var. Kısa ortak sözcüklerin alakasız metinler arasında bazen eşleşmiş görünmesinin sebebi budur. |
|---|
| Dosya kodlaması | Yüklenen dosyalar FileReader API ile UTF-8 olarak okunur. Diğer kodlamalar bozuk görünür. Önceden çevirin ya da dosyayı zaten çözmüş bir araçtan yapıştırın. |
|---|
| Büyük girdiler | Birkaç yüz KB'a kadar saniyenin altındadır. 1–2 MB belirgin biçimde yavaşlar. 5 MB'ı geçince darboğaz diff algoritması değil render etmedir. Yapıştırmadan önce daraltın. |
|---|
| Boş taraf | Bir panel boşsa diğer taraf tamamen ekleme (veya silme) olarak görünür. Bu, diff'in doğru davrandığı anlamına gelir, hata değildir. |
|---|
| Aynı girdi | İki taraf da tam olarak eşleştiğinde (boşluk, satır sonları ve Unicode biçimi dahil) sıfır değişiklik olur ve başlıklar sayım göstermez. |
|---|
Sık sorulan sorular
Metnim saklanıyor mu?
Hayır. Tüm karşılaştırma tarayıcınızda çalışır. Hiçbir şey sunucuya gönderilmez, kaydedilmez veya saklanmaz. DevTools'u açın ve Network sekmesini izleyin: karşılaştırma yaparken giden istek yoktur. Sekmeyi kapatın, metniniz uçar.
Bunun JSON diff'ten farkı nedir?
Bir metin diff'i karakterleri sırayla karşılaştırır, dolayısıyla JSON'daki anahtar sırasını değiştirmek veya boşlukları yeniden biçimlendirmek, veriler aynı olsa bile fark olarak görünür. Özellikle JSON karşılaştırıyorsanız Compare JSON aracını kullanın: önce iki tarafı parse eder ve sıraya duyarlıdır. Düz yazı, yapılandırma, normal kod veya yapısal veri olmayan her şey için metin diff'i istediğiniz şeydir.
Windows ve Unix satır sonlarını (CRLF vs LF) ele alıyor mu?
Olduğu gibi karşılaştırır, dolayısıyla bir Windows dosyası (CRLF) ile bir Unix dosyasının (LF) karşılaştırılması, içerik eşleşse bile her satır farklıymış gibi görünür. Bu, diff'in doğru çalıştığı anlamına gelir: girdiler gerçekten farklıdır. Düzeltmek için her iki kaynaktaki satır sonlarını normalleştirin ya da yapıştırmadan önce satır başı (CR) karakterlerini çıkarın.
Boyut sınırı var mı?
Pratik sınır cihazınızın belleğidir. Birkaç yüz KB'a kadar metinler bir saniyenin oldukça altında diff edilir. 1 MB'ı geçince tarayıcı bunu hisseder, çoğunlukla vurguların render edilmesi pahalıya geldiği için. Devasa log dosyaları veya kitap uzunluğunda elyazmaları için önce ilgilendiğiniz bölüme daraltın.
Diff neden bazen parçalı görünüyor?
Karakter düzeyinde diff, kısa ortak alt dizeleri (the, a, tek harfler, noktalama) bulabildiği yerde hizalar. Bir anlamsal temizleme geçişi bunları mümkün olduğunca sözcük düzeyinde bloklara gruplar, ama alakasız iki paragraf yine de parçalı bir sonuç verir. Algoritmanın iki metnin karşılaştırılmak üzere tasarlanmadığını anlama yolu yoktur.
Farklı kodlamalardaki dosyaları karşılaştırabilir miyim?
Yükleme düğmesi ile alınan dosyalar UTF-8 olarak okunur (FileReader'ın varsayılanı). Diğer kodlamalardaki dosyalar (Latin-1, Shift-JIS, Windows-1252) bozuk görünür; önce UTF-8'e çevirin. Panonuzdaki metin için işletim sisteminiz yapıştırmadan önce kodlamayı çözmüş olur, bu yüzden genelde sorunsuz çalışır.