Duplicate Line Remover

Hapus baris duplikat dari teks, pertahankan hanya baris unik

Coba contoh

Baris masukan

Baris unik

Berjalan lokal · Aman untuk menempel rahasia
Baris unik akan muncul di sini…

Apa Itu Penghapusan Baris Duplikat?

Penghapusan baris duplikat adalah proses memindai blok teks baris per baris dan hanya menyimpan kemunculan pertama dari setiap baris yang unik. Saat Anda menghapus baris duplikat secara online, alat ini membagi masukan berdasarkan karakter baris baru, melacak baris mana yang sudah muncul menggunakan struktur data berbasis hash (seperti Set), dan hanya mengeluarkan baris yang belum pernah dilihat sebelumnya. Urutan baris asli tetap terjaga.

Dua baris dianggap duplikat apabila keduanya sama persis, karakter demi karakter. Namun, data di dunia nyata jarang cocok secara tepat. Spasi di awal atau akhir, kapitalisasi yang tidak konsisten, dan karakter tak terlihat seperti tab atau carriage return semuanya dapat menyebabkan baris yang terlihat identik diperlakukan sebagai baris unik. Itulah mengapa sebagian besar alat deduplikasi menawarkan opsi perbandingan tidak sensitif huruf besar/kecil dan pemangkasan spasi sebelum perbandingan.

Deduplikasi adalah operasi yang berbeda dari pengurutan. Perintah Unix sort -u sekaligus mengurutkan dan mendeduplikasi, yang mengubah urutan baris. Jika Anda perlu mempertahankan urutan baris asli, Anda memerlukan pendekatan seen-set: iterasi baris secara berurutan, tambahkan bentuk yang dinormalisasi dari setiap baris ke dalam set, dan lewati baris yang kuncinya sudah ada. Alat ini menggunakan metode seen-set, sehingga kemunculan pertama tetap pada posisi aslinya.

Mengapa Menggunakan Duplicate Remover Ini?

Tempel teks Anda, pilih opsi perbandingan, dan lihat hasil deduplikasi secara langsung. Tanpa pengaturan command-line, tanpa penulisan regex, tanpa unggahan file.

Deduplikasi Instan
Hasil diperbarui saat Anda mengetik atau menempel. Alihkan sensitivitas huruf dan pemangkasan spasi untuk melihat bagaimana opsi berbeda memengaruhi keluaran tanpa perlu menjalankan ulang apa pun.
🔒
Pemrosesan Mengutamakan Privasi
Semua deduplikasi berjalan di browser menggunakan JavaScript. Teks Anda tetap berada di perangkat Anda dan tidak pernah diunggah ke server atau dicatat di mana pun.
🎯
Pencocokan yang Dapat Dikonfigurasi
Aktifkan mode tidak sensitif huruf untuk memperlakukan "Apple" dan "apple" sebagai baris yang sama. Aktifkan pemangkasan spasi untuk mengabaikan spasi di awal dan akhir selama perbandingan.
📋
Tanpa Akun
Buka halaman dan mulai mendeduplikasi. Tanpa pendaftaran, ekstensi browser, atau instalasi desktop. Berfungsi di perangkat apa pun dengan browser modern.

Kasus Penggunaan Duplicate Line Remover

Pengembangan Frontend
Bersihkan daftar kelas CSS, hapus pernyataan import yang berulang, atau deduplikasi kunci terjemahan i18n. Menghapus duplikat sebelum commit mencegah bundle yang membengkak dan mengurangi konflik merge.
Rekayasa Backend
Deduplikasi entri dalam requirements.txt, Gemfile, atau daftar dependensi package.json setelah menggabungkan branch. Hapus entri yang berulang dari allow-list, deny-list, atau tabel routing.
DevOps dan Infrastruktur
Bersihkan entri duplikat dari file .env, daftar host, atau Kubernetes ConfigMaps. Variabel lingkungan yang duplikat menyebabkan penimpaan diam-diam, sehingga mendeteksinya sebelum deployment menghindari bug konfigurasi yang sulit dilacak.
QA dan Otomasi Pengujian
Hapus ID kasus uji yang berulang dari manifes test run atau pernyataan duplikat dalam test suite yang dihasilkan. Deduplikasi pesan error dari keluaran log untuk melihat kumpulan kegagalan yang unik.
Rekayasa Data
Hapus baris duplikat dari ekspor CSV atau hasil kueri SQL yang ditempel sebagai teks. Bersihkan daftar email, daftar user ID, atau daftar tag sebelum mengimpornya ke database atau pipeline.
Pelajar dan Mahasiswa
Hapus entri yang berulang dari daftar kosakata, baris daftar pustaka, atau catatan belajar. Tempel konten dari beberapa sumber dan dapatkan daftar bersih yang unik tanpa perlu memasang aplikasi spreadsheet.

Perbandingan Metode Deduplikasi

Ada beberapa pendekatan untuk menghapus baris duplikat, masing-masing dengan trade-off berbeda untuk preservasi urutan, penggunaan memori, dan akurasi.

MetodeCara KerjaUrutan KeluaranDigunakan Di
SetHash-based, O(1) lookupUnorderedJavaScript Set, Python set()
Sorted + scanSort then skip adjacentSorted outputUnix sort -u, C++ std::unique
Seen-set + listTrack seen, preserve orderOriginal orderThis tool, Python dict.fromkeys()
Bloom filterProbabilistic membershipMay miss someLarge-scale pipelines, Redis
SQL DISTINCTDatabase-level dedupQuery-dependentSELECT DISTINCT col FROM table

Penanganan Sensitivitas Huruf dan Spasi

Dua opsi mengontrol bagaimana alat ini menentukan apakah dua baris adalah duplikat. Memahami kapan menggunakan setiap opsi mencegah false positive (memperlakukan baris yang berbeda sebagai duplikat) maupun false negative (melewatkan baris yang seharusnya cocok).

Sensitif Huruf Besar/Kecil (default: aktif)
Saat diaktifkan, "Apple" dan "apple" diperlakukan sebagai baris yang berbeda. Nonaktifkan ini saat mendeduplikasi data yang dikirimkan pengguna, daftar nama domain, atau teks apa pun di mana kapitalisasi tidak konsisten tetapi maknanya sama.
Pangkas Spasi (default: aktif)
Saat diaktifkan, spasi dan tab di awal dan akhir dihapus sebelum perbandingan. Ini menangkap baris yang terlihat identik tetapi berbeda oleh karakter tak terlihat, yang umum ditemui pada keluaran terminal yang di-copy-paste, file konfigurasi yang diindentasi, dan artefak editor.

Contoh Kode

Hapus baris duplikat secara terprogram dalam JavaScript, Python, Go, dan command line. Setiap contoh menunjukkan deduplikasi yang mempertahankan urutan dan menangani sensitivitas huruf.

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

Pertanyaan yang Sering Diajukan

Apa perbedaan antara menghapus duplikat dan menggunakan sort -u?
Perintah sort -u pertama-tama mengurutkan semua baris secara alfabetis lalu menghapus duplikat yang berdekatan. Ini mengubah urutan baris asli. Pendekatan seen-set, yang digunakan alat ini, mengiterasi baris secara berurutan dan melewati baris yang sudah muncul sebelumnya, sehingga urutan asli tetap terjaga. Gunakan sort -u jika Anda menginginkan keluaran yang terurut sekaligus unik. Gunakan pendekatan seen-set jika urutan penting.
Apakah teks saya dikirim ke server saat menghapus duplikat?
Tidak. Semua pemrosesan terjadi di browser menggunakan JavaScript. Teks tidak pernah meninggalkan perangkat Anda. Anda dapat memverifikasi ini dengan membuka tab Network di DevTools browser dan memastikan tidak ada permintaan yang dibuat saat Anda menempel teks dan mengalihkan opsi.
Berapa banyak baris yang dapat ditangani alat ini?
Alat ini bekerja dengan baik untuk puluhan ribu baris. Set JavaScript memiliki rata-rata waktu pencarian O(1), sehingga deduplikasi 100.000 baris membutuhkan waktu kurang dari 100 milidetik pada perangkat keras modern. Untuk file yang lebih besar dari beberapa megabyte, gunakan one-liner awk '!seen[$0]++' di command line, yang mengalirkan file tanpa memuatnya seluruhnya ke dalam memori.
Bagaimana deduplikasi tidak sensitif huruf bekerja?
Saat sensitivitas huruf dinonaktifkan, setiap baris dikonversi ke huruf kecil sebelum diperiksa terhadap kumpulan baris yang sudah dilihat. Versi dengan huruf asli dari kemunculan pertama disimpan dalam keluaran. Jadi jika masukan Anda memiliki "Apple" di baris 1 dan "apple" di baris 5, "Apple" dipertahankan dan "apple" dihapus.
Bisakah saya menghapus duplikat dan mengurutkan sekaligus?
Alat ini menghapus duplikat tanpa mengubah urutan baris. Untuk mendapatkan keluaran yang terurut dan unik, pertama gunakan alat Line Sorter dalam kategori yang sama untuk mengurutkan teks Anda, lalu tempel hasil terurut di sini untuk menghapus sisa duplikat. Atau gunakan sort -u di command line untuk solusi satu langkah.
Apa yang terjadi dengan baris kosong dan baris yang hanya berisi spasi?
Baris kosong diperlakukan seperti baris lainnya. Jika teks Anda memiliki tiga baris kosong, hanya yang pertama yang disimpan. Saat pemangkasan spasi diaktifkan, baris yang hanya berisi spasi atau tab dinormalisasi menjadi string kosong sebelum perbandingan, sehingga semuanya dianggap sebagai duplikat dari baris kosong atau baris yang hanya berisi spasi pertama.
Bagaimana cara menghapus duplikat dari file CSV berdasarkan kolom tertentu?
Alat ini membandingkan seluruh baris, bukan kolom individual. Untuk mendeduplikasi CSV berdasarkan kolom tertentu, gunakan awk dengan pemisah field: awk -F',' '!seen[$2]++' file.csv menghapus baris dengan nilai duplikat di kolom kedua. Di Python, gunakan pandas: df.drop_duplicates(subset=['column_name']). Untuk data SQL, gunakan SELECT DISTINCT atau GROUP BY pada kolom target.