Metin Karşılaştırma ve Diff
İki metni tarayıcınızda anında karşılaştırın. Satır içi kelime düzeyinde vurgulu yan yana görünüm, unified-diff dışa aktarımı, büyük/küçük harf — boşluk — boş satır yoksayma. %100 gizli — metniniz cihazınızdan ayrılmaz.
Yoksayma seçenekleri
Metin Diff nedir?
Metin diff, iki metin belgesinin yapılandırılmış karşılaştırmasıdır; birini diğerine dönüştüren en küçük ekleme ve silme kümesini bulur. Çıktı değişikliği görünür kılar: eklenen satırlar için yeşil, kaldırılan satırlar için kırmızı, yan yana veya unified-patch biçiminde (`git`, GitHub ve Unix `patch` komutunun kullandığı `---/+++/@@` biçimi).
Kaputun altında her modern diff bir Longest Common Subsequence (LCS) algoritmasıdır. Eugene Myers'ın 1986 tarihli O((N+M)D) makalesi kanonik verimli uygulamadır; klasik dinamik programlama (burada kullanılan, ortak ön ek/son ek kırpmasıyla) daha basittir ve tipik web girdileri için mükemmel çalışır. Satırlar hizalandıktan sonra, komşu kaldırma + ekleme çiftleri ikinci bir token düzeyinde LCS'den geçirilir, böylece render edici yalnızca bir satır içinde gerçekten değişen kelimeleri vurgulayabilir — inceleyenlerin satır içi veya kelime düzeyinde diff dediği şey.
Neden sadece dizeleri karakter karakter karşılaştırmıyoruz? Çünkü düzenlemeler nadiren düzdür: 200 satırlık bir dosyanın ortasına bir satır eklemek altındaki her satırı kaydırır. Naif bir `===` 199 satırı farklı sayar. LCS gerçeği söyler: bir satır eklendi, 199 satır değişmedi.
Bu araç tüm karşılaştırmayı tarayıcınızda yürütür. Yükleme yok, geçici dosya yok, log yok. Özel kodlar, kırmızı çizgi sözleşmeler, özel loglar veya üçüncü taraf sunucusuna yapıştırmaktan rahatsızlık duyacağınız her şey için güvenlidir. JSON karşılaştırmanız gerekiyor mu? Anahtar sırası ve boşlukların artık gürültü olmaması için yapısal JSON Diff aracını kullanın. YAML veya CSV'de iki yapılandırmayı karşılaştırıyor musunuz? Önce YAML to JSON veya JSON to CSV ile dönüştürün, sonra biçim için doğru araçla diff yapın.
// Two strings that look 'mostly the same' but a naïve check disagrees const a = 'hello world'; const b = 'hello, world!'; // Character equality a === b; // false — but only 3 characters actually changed. // LCS-style diff (this tool, at line + word granularity) // → 1 line modified, inline highlight: 'hello[, ]world[!]' // → unified patch: // --- original // +++ modified // @@ -1 +1 @@ // -hello world // +hello, world!
Temel Özellikler
Yan Yana + Unified
Görsel iki sütunlu görünüm (insan incelemesi için) ile kanonik unified-diff yama biçimi (`git apply`, kod inceleme araçları, hata raporları için) arasında geçiş yapın.
Satır içi kelime düzeyinde vurgulama
İki satır değiştirilmiş olarak eşleştirildiğinde yalnızca değişen tokenler renkli arka plan taşır. Gözünüz 80 karakteri taramak yerine düzenlemeyi anında bulur.
Büyük/küçük harf / boşluk / boş satır yoksay
Dört bağımsız anahtar: büyük/küçük harf, tüm boşluk, yalnızca sondaki boşluk, boş satırlar. Birkaç tıklamayla `git diff -i -w -b` davranışını tekrarlar.
Unified diff dışa aktarma
Üç satır bağlamla temiz bir `---/+++/@@` yamasını kopyalayın. Doğrudan bir PR yorumuna, hata raporuna veya `patch -p1` komutuna düşer.
%100 tarayıcı tabanlı
Girdiler cihazınızdan asla ayrılmaz. Yükleme yok, metin üzerinde analitik yok. Sayfa yüklendikten sonra çevrimdışı çalışır. Özel kodlar ve gizli düzyazılar için güvenlidir.
Unicode + RTL duyarlı
Tokenleri Unicode kelime sınırlarında böler. Arapça, İbranice, CJK içerik temiz karşılaştırılır; satır sonu varyantları (CRLF, LF, CR) hepsi normalleştirilir.
Örnekler
Kod incelemesi — tek değişken yeniden adlandırma
function getUser(id) {
const u = db.users.find(x => x.id === id);
return u;
} function getUser(userId) {
const u = db.users.find(x => x.id === userId);
return u;
} Yan yana görünüm yeniden adlandırmayı içeren her satırı vurgular; satır içi kelime diff'i değişmeyen tokenleri soluklaştırır, böylece inceleyen kişi tam olarak hangi tanımlayıcının değiştiğini görür.
Sözleşme düzenlemesi — bir madde eklendi
1. The service is provided as-is. 2. Either party may terminate with 30 days notice. 3. Disputes are resolved in California courts.
1. The service is provided as-is. 2. Either party may terminate with 30 days notice. 2a. Termination notice must be in writing. 3. Disputes are resolved in California courts.
Tek bir eklenmiş madde (satır 2a) yegane farktır. Çevredeki bağlam satırları temiz kalır — sözleşme veya politika belgelerinde kırmızı çizgi incelemesi için ideal.
Log incelemesi — istek süresi değişti
GET /api/users 200 14ms POST /api/orders 201 88ms GET /api/orders/42 200 21ms
GET /api/users 200 14ms POST /api/orders 201 4200ms GET /api/orders/42 500 21ms
İki satır değişiyor. Satır içi vurgu 88ms → 4200ms gecikme kayması ile 200 → 500 durum kodunu gösteriyor. Olay zaman çizelgesi için tipik bir durum.
Sondaki boşluk — 'Sondakileri yoksay' seçeneğini açın
margin: 0; padding: 0; border: none;
margin: 0; padding: 0; border: none;
Seçenek olmadan 1. satırda fark bildirilir (sondaki boşluklar). 'Sondaki boşluk / sekmeleri yoksay' seçeneğini açın ve fark sıfıra düşer — `git diff -b`'nin yaptığı aynı numara.
Nasıl Kullanılır
- 1
Her iki sürümü yapıştırın
Orijinal metin solda, değiştirilen metin sağda. Yazdıkça canlı diff işlenir; büyük girdiler (toplam >200 KB) manuel Diff düğmesine geçer.
- 2
İhtiyacınız olan yoksayma seçeneklerini açın
Büyük/küçük harf yoksay, tüm boşlukları yoksay, sondaki boşlukları yoksay veya boş satırları yoksay — her biri bağımsız, ziyaretler arasında kalıcı.
- 3
Diff'i okuyun veya yamayı alın
İnsan incelemesi için Yan Yana, `---/+++/@@` yama biçimi için Unified. Unified diff kopyala, kod incelemesi veya `patch -p1` için panonuza temiz bir yama gönderir.
Yaygın Diff Tuzakları
Windows'tan Unix'e kopyaladıktan sonra tüm dosya 'değişmiş'
Windows'taki Notepad'den Unix'te düzenlenmiş bir orijinale yapıştırırsanız her satır `\r` farkı gösterir. CR karakterlerini susturmak için 'Sondaki boşluk / sekmeleri yoksay' seçeneğini açın.
Diff: 200 modifications (all because of trailing \r)
Ignore trailing spaces / tabs → 2 real changes
Sadece girintilemeyle ilgili diff bağırıyor
Sekmeleri ↔ boşlukları yeniden biçimlendirmek satır satır diff'leri patlatır. 'Tüm boşlukları yoksay' diff'i gerçek anlamsal değişikliklere indirir.
Diff: 87 modifications (all are indent changes)
Ignore all whitespace → 4 actual changes
Bir boş satır yüzünden aynı paragraflar işaretleniyor
Düzyazıya tek bir boş satır eklemek veya kaldırmak tüm bir bölgeyi yanlış hizalayabilir. 'Boş satırları yoksay' içeriğe dokunmadan bunu giderir.
Diff: paragraph 2 'completely changed' (one blank line moved)
Ignore blank lines → no changes in paragraph 2
Diff 'aynı' diyor ama dosyalar farklı
Neredeyse her zaman önceki oturumdan açık kalmış bir büyük/küçük harf veya boşluk yoksayma seçeneği vardır. Yoksayma seçenekleri panelini açın — her anahtar orada görünür. Bayt-katı karşılaştırma istiyorsanız hepsini kapatın.
0 differences shown, but `cmp` says the files differ
Disable all Ignore options → real diff appears
Yapıştırılan JSON 'her şey değişmiş' gibi görünüyor
Metin diff anahtar sırasını anlamlı sayar; JSON saymaz. JSON yükleri için özel JSON Diff aracını kullanın — anahtar sırasını yoksayar ve tür katılığına saygı duyar.
Text diff on JSON: 100% of lines changed (just a key reorder)
<a href="/tr/tools/json-diff">JSON Diff</a>: 0 differences
Diff kırpma uyarısı yoksayıldı
Taraf başına 5.000 satırın üzerinde girdi kırpılır. Uyarı çıkıyorsa komut satırında `diff -u file1 file2` veya `git diff --no-index` komutuna geçin — her ikisi de akış yapar ve gigabaytları kaldırır.
Pasted a 20,000-line log — only first 5,000 lines diffed
`diff -u a.log b.log` in terminal handles full file
Yaygın Kullanım Senaryoları
- Kod inceleme parçacığı
- Bir fonksiyonun iki sürümünü kutulara bırakın; yeniden adlandırma, kaldırılmış bir dal veya yeni bir koruyucu cümle bir bakışta görünür. Tek satırlık bir değişiklik için GitHub diff'ini taramaktan satır içi kelime vurgusu daha hızlıdır.
- Sözleşme / politika kırmızı çizgi
- Dünkü sözleşmeyi bugünkü revizyonla yapıştırın. Eklenen maddeler göze çarpar; değişmeyen paragraflar griye iner. Hukuki inceleme izi için unified yamayı dışa aktarın.
- Log zaman çizelgesi incelemesi
- Bir SRE'nin olay öncesi log dilimini olay sırasındaki dilimle karşılaştırın. Gecikme, durum kodu ve sıklık kayması `awk` olmadan hemen yüzeye çıkar.
- Düzyazı / taslak revizyonu
- Bir taslağı editörünüzün sürümüyle yapıştırın. Satır içi kelime diff'i hangi cümlelerin yeniden yazıldığını tam olarak gösterir — değişiklikleri birer birer kabul veya reddetmek için paha biçilmez.
- Çeviri incelemesi
- Yeni metnin anlamı, yapıyı ve yer tutucuları koruduğunu doğrulamak için eski bir çeviriyi yeniden çeviriyle karşılaştırın. Çevirmenlerin sıkça soktuğu gürültüyü susturmak için 'Sondaki boşluğu yoksay' seçeneğini açın.
- Yapılandırma / .env dosya denetimi
- İki `.env`, `docker-compose.yaml` veya shell rc dosyasını karşılaştırın. 'Boş satırları yoksay' açıkken diff biçim gürültüsü yerine işlevsel farklara odaklanır.
Teknik Ayrıntılar
- Ön ek/son ek kırpmalı LCS
- Ortak başta ve sonda gelen satırlar dinamik programlama LCS'sini çalıştırmadan önce çıkarılır. 'Tek satır değişen iki 2.000 satırlık yapılandırma' diff'i 1×1 DP tablosuna iner ve bir milisaniyenin altında işlenir.
- Token düzeyinde satır içi diff
- Komşu kaldırma + ekleme parçaları eşleştirilir ve Unicode kelime/kelime-dışı/boşluk öbekleri üzerinden tokenleştirilir. İkinci bir LCS geçişi, değiştirilen satırları okunaklı kılan yeşil/kırmızı token aralıklarını üretir.
- Unified diff = git/patch uyumlu
- Çıktı, GNU patch için tanımlanan ve Git, GitHub ve her kod inceleme aracının kullandığı `---/+++/@@ -L,C +L,C @@` biçimini izler. `pbpaste | patch -p0` ile uygulayın.
- Taraf başına 5.000 satır girdi tavanı
- Tavanın üzerinde diff kırpılır ve uyarı verir. Çoklu megabaytlık girdiler için komut satırında `diff -u` veya `git diff --no-index` kullanın — bunlar akış yapar ve gigabaytları kaldırır.
En İyi Uygulamalar
- Okumadan önce yoksayma seçeneklerini seçin
- Sondaki boşluk, CRLF ve büyük/küçük harf gürültüsü sinyali boğar. Önce doğru seçenekleri açın; diff çok daha kolay okunur ve kendinizi 'sahte' değişiklikleri taramaya alıştırmazsınız.
- Paylaşırken Unified, incelerken Yan Yana kullanın
- Görsel sütunlar sizin gözleriniz içindir. Unified yamalar herkesin terminali içindir. Kopyalanmış unified diff, çeviri olmadan bir Slack mesajına, bir Jira yorumuna veya `patch -p1` komutuna düşer.
- % benzerlik ile mantık denetimi yapın
- İki dosya 'neredeyse aynı' ama benzerlik puanı %30 ise satır sonu veya boşluk sorununuz var demektir. Diff'i okumadan önce 'Tüm boşlukları yoksay' seçeneğini açıp yeniden kontrol edin.
Sık Sorulan Sorular
Yapıştırdığım metin sunucunuza gönderiliyor mu?
Metin diff ile JSON diff arasındaki fark nedir?
Boşluk, büyük/küçük harf veya boş satırları nasıl yoksayarım?
Unified diff nedir (ve ne zaman kopyalarım)?
Yalnızca bir kelime düzenlediğim halde diff neden tüm satırı değişmiş gösteriyor?
CRLF ve LF satır sonları nasıl işleniyor?
İki girdi ne kadar büyük olabilir?
Peki kod karşılaştırma? Dilimi biliyor mu?
Tek bir düzenleme bazen neden kaldırılmış satır artı eklenmiş satır olarak görünür?
% eşleşme benzerliği nasıl hesaplanır?
Bir diff'i meslektaşımla paylaşabilir miyim?
Diff, Arapça veya İbranice gibi sağdan sola dilleri destekliyor mu?
İlgili Araçlar
Tüm araçları görüntüleyin →Ücretsiz Regex Tester — İfadeleri Çevrimiçi Sınayın
Metin İşleme
Düzenli ifadeleri herhangi bir metne karşı anında test edin. Canlı eşleşme vurgulama, yakalama grupları, değiştirme önizlemesi, bölme ve desen açıklayıcı. JavaScript lehçesi regex, %100 gizli, çevrimiçi, ücretsiz, kayıt yok.
Ücretsiz Kelime Sayıcı ve Karakter Sayma Aracı
Metin İşleme
Kelime, karakter, cümle, paragraf ve okuma süresini anında sayın. Twitter, meta açıklama ve Instagram sınır denetimleriyle gerçek zamanlı kelime sayıcı. Ücretsiz, gizli, çevrimiçi, kayıt yok.
Sayı Tabanı Dönüştürücü — Binary, Hex, Decimal ve Octal
Dönüştürme Araçları
Binary, hex, decimal, octal ve herhangi bir taban (2-36) arasında anında dönüştürün. Ücretsiz ve gizli — tüm işlem tarayıcınızda yapılır.
Base64 Çözücü ve Kodlayıcı
Kodlama ve Biçimlendirme
Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.
Crontab Oluşturucu ve Cron İfadesi Üretici
Tarih ve Saat
Cron ifadelerini tarayıcıda oluşturun, doğrulayın ve çözümleyin. Yerel saatte veya UTC olarak canlı çalışma önizlemesi. POSIX 5 alanlı söz dizimi, hazır şablonlar ve sade açıklama. Ücretsiz ve gizli.
CSV'den JSON'a Dönüştürücü
Kodlama ve Biçimlendirme
CSV'yi tarayıcınızda JSON'a dönüştürün. RFC 4180, tür çıkarımı, başlık satırı, büyük tam sayı güvenli. %100 gizli, yükleme yok.