Yinelenen satır kaldırma, bir metin bloğunu satır satır tarayarak her benzersiz satırın yalnızca ilk tekrarını tutma işlemidir. Yinelenen satırları çevrimiçi olarak kaldırdığınızda araç, girişinizi yeni satır karakterlerine göre böler, hangi satırların daha önce görüldüğünü karma tabanlı bir veri yapısıyla (Set gibi) izler ve yalnızca daha önce görülmemiş satırları çıktıya aktarır. Özgün satır sırası korunur.
İki satır, karakter karakter tam olarak eşleştiğinde yinelenen olarak kabul edilir. Ancak gerçek dünya verisi çoğu zaman tam eşleşmeye uygun değildir. Başta veya sonda yer alan boşluklar, tutarsız büyük/küçük harf kullanımı ve sekme ya da satır başı gibi görünmez karakterler, görünürde özdeş olan satırların farklı kabul edilmesine yol açabilir. Bu nedenle çoğu tekilleştirme aracı, karşılaştırma öncesinde büyük/küçük harf duyarsız karşılaştırma ve boşluk kırpma seçenekleri sunar.
Tekilleştirme, sıralamadan farklı bir işlemdir. Unix komutu sort -u hem sıralar hem de tekilleştirir; bu da satır sırasını değiştirir. Satırların özgün sırasını korumak istiyorsanız görülen-küme (seen-set) yaklaşımına ihtiyaç duyarsınız: satırlar üzerinden sırayla geçin, her satırın normalleştirilmiş biçimini bir kümeye ekleyin ve anahtarı zaten mevcut olan satırları atlayın. Bu araç görülen-küme yöntemini kullandığından ilk tekrarlar özgün konumlarında kalır.
Bu Yinelenen Kaldırıcıyı Neden Kullanmalısınız?
Metninizi yapıştırın, karşılaştırma seçeneklerinizi belirleyin ve tekilleştirilmiş sonucu anında görün. Komut satırı kurulumu, regex yazımı veya dosya yükleme gerekmez.
⚡
Anında Tekilleştirme
Siz yazarken veya yapıştırırken sonuçlar güncellenir. Büyük/küçük harf duyarlılığını ve boşluk kırpmayı açıp kapatarak farklı seçeneklerin çıktıyı nasıl etkilediğini herhangi bir şeyi yeniden çalıştırmadan görün.
🔒
Gizlilik Öncelikli İşlem
Tüm tekilleştirme işlemleri JavaScript kullanılarak tarayıcınızda gerçekleşir. Metniniz cihazınızda kalır; hiçbir şey sunucuya yüklenmez veya herhangi bir yerde kaydedilmez.
🎯
Yapılandırılabilir Eşleştirme
"Elma" ve "elma"yı aynı satır olarak değerlendirmek için büyük/küçük harf duyarsız modu etkinleştirin. Karşılaştırma sırasında baştaki ve sondaki boşlukları yok saymak için boşluk kırpmayı açın.
📋
Hesap Gerekmez
Sayfayı açın ve tekilleştirmeye başlayın. Kayıt yok, tarayıcı eklentisi yok, masaüstü kurulumu yok. Modern tarayıcısı olan her cihazda çalışır.
Yinelenen Satır Kaldırıcı Kullanım Alanları
Ön Uç Geliştirme
CSS sınıf listelerini temizleyin, tekrarlanan import ifadelerini kaldırın veya i18n çeviri anahtarlarını tekilleştirin. Commit öncesi yinelenenlerin kaldırılması şişirilmiş paketleri önler ve birleştirme çakışmalarını azaltır.
Arka Uç Mühendisliği
Dal birleştirmelerinin ardından requirements.txt, Gemfile veya package.json bağımlılık listelerindeki yinelenenleri temizleyin. İzin listelerinden, engel listelerinden veya yönlendirme tablolarından tekrarlanan girişleri kaldırın.
DevOps ve Altyapı
.env dosyalarından, sunucu listelerinden veya Kubernetes ConfigMap'lerinden yinelenen girişleri temizleyin. Yinelenen ortam değişkenleri sessiz geçersiz kılmalara neden olur; bu nedenle dağıtımdan önce yakalamak izlemesi güç yapılandırma hatalarından kaçınmanızı sağlar.
QA ve Test Otomasyonu
Test çalıştırma manifestlerinden tekrarlanan test senaryosu ID'lerini veya oluşturulan test paketlerindeki yinelenen doğrulamaları kaldırın. Benzersiz hata kümesini görmek için günlük çıktısındaki hata iletilerini tekilleştirin.
Veri Mühendisliği
CSV dışa aktarmalarından veya metin olarak yapıştırılan SQL sorgu sonuçlarından yinelenen satırları temizleyin. E-posta listelerini, kullanıcı ID listelerini veya etiket listelerini bir veritabanına ya da iş hattına aktarmadan önce temizleyin.
Öğrenciler ve Öğrenenler
Kelime listelerinden, bibliyografya satırlarından veya çalışma notlarından tekrarlanan girişleri kaldırın. Birden fazla kaynaktan içerik yapıştırın ve bir elektronik tablo uygulaması kurmadan temiz, benzersiz bir liste elde edin.
Tekilleştirme Yöntemlerinin Karşılaştırması
Yinelenen satırları kaldırmak için her biri sıra korunumu, bellek kullanımı ve doğruluk açısından farklı ödünleşimlere sahip çeşitli yaklaşımlar mevcuttur.
Yöntem
Nasıl Çalışır
Çıktı Sırası
Kullanım Yeri
Set
Hash-based, O(1) lookup
Unordered
JavaScript Set, Python set()
Sorted + scan
Sort then skip adjacent
Sorted output
Unix sort -u, C++ std::unique
Seen-set + list
Track seen, preserve order
Original order
This tool, Python dict.fromkeys()
Bloom filter
Probabilistic membership
May miss some
Large-scale pipelines, Redis
SQL DISTINCT
Database-level dedup
Query-dependent
SELECT DISTINCT col FROM table
Büyük/Küçük Harf Duyarlılığı ve Boşluk İşleme
İki seçenek, bu aracın iki satırın yinelenen olup olmadığına nasıl karar verdiğini kontrol eder. Her seçeneği ne zaman kullanacağınızı anlamak hem yanlış pozitifleri (farklı satırları yinelenen olarak değerlendirme) hem de yanlış negatifleri (eşleşmesi gereken satırları gözden kaçırma) önler.
Büyük/Küçük Harfe Duyarlı (varsayılan: açık)
Etkinleştirildiğinde "Elma" ve "elma" farklı satırlar olarak kabul edilir. Kullanıcı tarafından girilen verileri, alan adı listelerini veya büyük/küçük harf kullanımının tutarsız olduğu ancak anlamın aynı olduğu metinleri tekilleştirirken bu seçeneği kapatın.
Boşlukları Kırp (varsayılan: açık)
Etkinleştirildiğinde karşılaştırma öncesinde baştaki ve sondaki boşluklar ile sekmeler kaldırılır. Bu seçenek, görünürde özdeş ancak görünmez karakterler bakımından farklı olan satırları yakalar; kopyalanıp yapıştırılan terminal çıktısında, girintili yapılandırma dosyalarında ve düzenleyici kalıntılarında sık karşılaşılan bir durumdur.
Kod Örnekleri
JavaScript, Python, Go ve komut satırında yinelenen satırları programatik olarak kaldırın. Her örnek, sıra korumalı tekilleştirmeyi gösterir ve büyük/küçük harf duyarlılığını ele alır.
JavaScript
const text = `apple
banana
apple
Cherry
banana
cherry`
// Remove exact duplicates, preserve order
const unique = [...new Map(
text.split('\n').map(line => [line, line])
).values()].join('\n')
// → "apple\nbanana\nCherry\ncherry"
// Case-insensitive deduplication
const seen = new Set()
const ciUnique = text.split('\n').filter(line => {
const key = line.toLowerCase()
if (seen.has(key)) return false
seen.add(key)
return true
}).join('\n')
// → "apple\nbanana\nCherry"
// Trim whitespace before comparing
const trimDedup = text.split('\n').filter(line => {
const key = line.trim().toLowerCase()
if (seen.has(key)) return false
seen.add(key)
return true
}).join('\n')
Python
text = """apple
banana
apple
Cherry
banana
cherry"""
lines = text.splitlines()
# Remove duplicates, preserve order (Python 3.7+)
unique = list(dict.fromkeys(lines))
# → ['apple', 'banana', 'Cherry', 'cherry']
# Case-insensitive deduplication
seen = set()
ci_unique = []
for line in lines:
key = line.lower()
if key not in seen:
seen.add(key)
ci_unique.append(line)
# → ['apple', 'banana', 'Cherry']
# With whitespace trimming
seen = set()
trimmed = []
for line in lines:
key = line.strip().lower()
if key not in seen:
seen.add(key)
trimmed.append(line)
Go
package main
import (
"fmt"
"strings"
)
func removeDuplicates(text string) string {
lines := strings.Split(text, "\n")
seen := make(map[string]bool)
result := make([]string, 0, len(lines))
for _, line := range lines {
if !seen[line] {
seen[line] = true
result = append(result, line)
}
}
return strings.Join(result, "\n")
}
func main() {
text := "apple\nbanana\napple\ncherry\nbanana"
fmt.Println(removeDuplicates(text))
// → apple\nbanana\ncherry
}
CLI (bash)
# Remove duplicates (sorts output — does not preserve order)
sort -u file.txt
# Remove duplicates while preserving original order
awk '!seen[$0]++' file.txt
# Case-insensitive dedup, preserve order
awk 'BEGIN{IGNORECASE=1} !seen[tolower($0)]++' file.txt
# Trim whitespace then dedup
sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txt | awk '!seen[$0]++'
# Count duplicates before removing
sort file.txt | uniq -c | sort -rn
Sık Sorulan Sorular
Yinelenen satırları kaldırmak ile sort -u kullanmak arasındaki fark nedir?
sort -u komutu önce tüm satırları alfabetik olarak sıralar, ardından bitişik yinelenenleri kaldırır. Bu işlem özgün satır sırasını değiştirir. Bu aracın kullandığı görülen-küme yaklaşımı ise satırlar üzerinden sırayla geçer ve daha önce görülmüş olan satırları atlar; böylece özgün sıra korunur. Hem sıralı hem de benzersiz çıktı istediğinizde sort -u kullanın. Sıra önemli olduğunda görülen-küme yaklaşımını tercih edin.
Hayır. Tüm işlem JavaScript kullanılarak tarayıcınızda gerçekleşir. Metin hiçbir zaman cihazınızdan çıkmaz. Bunu doğrulamak için tarayıcınızın DevTools Ağ sekmesini açın ve metin yapıştırırken ile seçenekleri değiştirirken hiçbir istek gönderilmediğini onaylayın.
Bu araç kaç satırı işleyebilir?
Araç on binlerce satırla sorunsuz çalışır. JavaScript'in Set yapısı O(1) ortalama arama süresine sahip olduğundan 100.000 satırı tekilleştirmek modern donanımda 100 milisaniyenin altında tamamlanır. Birkaç megabayttan büyük dosyalar için komut satırında awk '!seen[$0]++' tek satırını kullanın; bu komut dosyayı tamamen belleğe yüklemeden akış olarak işler.
Büyük/küçük harf duyarsız tekilleştirme nasıl çalışır?
Büyük/küçük harf duyarlılığı kapalıyken her satır, görülen satırlar kümesiyle karşılaştırılmadan önce küçük harfe dönüştürülür. İlk tekrarın özgün büyük/küçük harf biçimi çıktıda tutulur. Örneğin girişinizde 1. satırda "Elma" ve 5. satırda "elma" varsa "Elma" tutulur, "elma" kaldırılır.
Yinelenenleri kaldırıp aynı anda sıralayabilir miyim?
Bu araç, satır sırasını değiştirmeden yinelenenleri kaldırır. Sıralı ve benzersiz çıktı elde etmek için önce aynı kategorideki Satır Sıralayıcı aracını kullanarak metninizi sıralayın, ardından sıralanmış sonucu buraya yapıştırarak kalan yinelenenleri kaldırın. Alternatif olarak tek adımlı bir çözüm için komut satırında sort -u komutunu kullanabilirsiniz.
Boş satırlar ve yalnızca boşluk içeren satırlar nasıl işlenir?
Boş satırlar diğer satırlar gibi değerlendirilir. Metninizde üç boş satır varsa yalnızca ilki tutulur. Boşluk kırpma açıkken yalnızca boşluk veya sekme içeren satırlar karşılaştırma öncesinde boş diziye normalleştirilir; dolayısıyla hepsi ilk boş veya yalnızca boşluk içeren satırın yineleneni olarak kabul edilir.
Bir CSV dosyasındaki yinelenenleri belirli bir sütuna göre nasıl kaldırabilirim?
Bu araç satırların tamamını karşılaştırır, tek tek sütunları değil. Belirli bir sütuna göre CSV tekilleştirmek için awk ile alan ayırıcı kullanın: awk -F',' '!seen[$2]++' dosya.csv komutu ikinci sütunda yinelenen değere sahip satırları kaldırır. Python'da pandas kullanın: df.drop_duplicates(subset=['sutun_adi']). SQL verisi için hedef sütunda SELECT DISTINCT veya GROUP BY kullanın.