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
Ekibimiz metin diff çıktısını `git diff` ve GNU `diff -u` ile doğrular; satır içi kelime vurgulamasına, satır sonu normalleştirmesine ve Unicode tokenleştirmesine özen gösterir. Unified-diff biçimi GNU patch şartnamesine uyar.
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 veyapatch -p1iç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ı
awkolmadan 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.yamlveya 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 -p0ile 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 -uveyagit diff --no-indexkullanı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 -p1komutuna 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?
git diff -b davranışı. 'Boş satırları yoksay' karşılaştırmadan önce yalnızca boşluk içeren satırları atar. Her seçenek bağımsızdır ve ziyaretler arası kalıcıdır. Unified diff nedir (ve ne zaman kopyalarım)?
patch, git apply, GitHub PR'leri ve çoğu kod inceleme aracının kullandığı ---/+++/@@ metin biçimidir. 'Unified diff kopyala'ya tıklayarak her değişiklik etrafında üç satır bağlam içeren bir yama alın — onu bir hata raporuna, kod inceleme yorumuna veya patch -p1 komutuna yapıştırın, temiz şekilde uygulanır. Yan yana insanlar için, unified diff makineler (ve makineler gibi düşünen kod inceleyenler) içindir. 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?
\r\n, \n ve yalın \r üzerinden bölünür, böylece Windows CRLF, Unix LF ve eski Mac CR metinleri doğru şekilde hizalanır. Özellikle satır sonu değişikliklerini işaretlemek istiyorsanız 'Sondaki boşluk / sekmeleri yoksay' seçeneğini kapalı bırakın — \r sondaki karakter olarak görünür. Satır sonu gürültüsünü tamamen silmek için 'Tüm boşlukları yoksay' seçeneğini açın. İki girdi ne kadar büyük olabilir?
diff -u veya git diff --no-index kullanın — bunlar akış yapar ve gigabaytları kaldırır. 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?
-/+ çiftli biçimi görmek için Unified görünümüne geçin. % eşleşme benzerliği nasıl hesaplanır?
Bir diff'i meslektaşımla paylaşabilir miyim?
patch < clip ile uygulayabilir. (2) Görsel inceleme için yan yana panelin ekran görüntüsünü alın. 'URL ile paylaş' düğmesini kasıtlı olarak sunmuyoruz: bu, metninizi yüklemeyi gerektirir ve biz bunu yapmıyoruz. Diff, Arapça veya İbranice gibi sağdan sola dilleri destekliyor mu?
İlgili Araçlar
Tüm araçları görüntüleyin →Harf Dönüştürücü — UPPER, lower, camelCase ve Daha Fazlası
Metin İşleme
Metni UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE ve 6 biçim daha arasında anında dönüştürün. Ücretsiz, çevrimiçi, kayıt yok.
Lorem Ipsum Oluşturucu — Ücretsiz Yer Tutucu Metin
Metin İşleme
Lorem Ipsum yer tutucu metni anında oluşturun — paragraf, cümle, kelime, bayt veya liste olarak. Düz metin, HTML, Markdown veya JSON olarak kopyalayın ya da indirin. %100 ücretsiz, gizli, tarayıcı içi. Kayıt gerekmez.
Ü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.
Metinden Yinelenen Satırları Kaldır
Metin İşleme
Metinden yinelenen satırları çevrimiçi kaldırın — ücretsiz, anında, %100 tarayıcınızda. Büyük/küçük harf veya boşluğu yoksayın, ilk ya da son tekrarı tutun ve kaldırılan sayıyı görün. Ayrıca sıralayın ve temizleyin. Kayıt yok.
URL Slug Üretici — Her Metni Slug'a Çevirin
Metin İşleme
Her başlığı anında temiz, SEO dostu bir URL slug'ına çevirin. Aksanları ve Kiril'i harf çevirisiyle dönüştürün veya Unicode harfleri koruyun. %100 gizli, tarayıcınızda.
Metin Satırlarını Alfabetik ve Doğal Sırala
Metin İşleme
Metin satırlarını alfabetik, sayısal (doğal sıra) veya uzunluğa göre, artan ya da azalan sıralayın. Ücretsiz çevrimiçi satır sıralayıcı, %100 tarayıcınızda. Ayrıca yineleme kaldırma, ters çevirme ve liste temizleme. Kayıt yok.