ToolDeck

ตัวลบบรรทัดซ้ำ

ลบบรรทัดที่ซ้ำกันออกจากข้อความ เก็บไว้เฉพาะบรรทัดที่ไม่ซ้ำกัน

ลองตัวอย่าง

บรรทัดอินพุต

บรรทัดที่ไม่ซ้ำ

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
บรรทัดที่ไม่ซ้ำจะปรากฏที่นี่…

การลบบรรทัดซ้ำคืออะไร?

การลบบรรทัดซ้ำคือกระบวนการสแกนกลุ่มข้อความทีละบรรทัดและเก็บไว้เฉพาะการปรากฏครั้งแรกของแต่ละบรรทัดที่ไม่ซ้ำกัน เมื่อลบบรรทัดซ้ำในเบราว์เซอร์ เครื่องมือจะแบ่งอินพุตที่อักขระขึ้นบรรทัดใหม่ ติดตามว่าบรรทัดใดปรากฏแล้วโดยใช้โครงสร้างข้อมูลแบบ hash (เช่น Set) และแสดงผลเฉพาะบรรทัดที่ยังไม่เคยพบมาก่อน ลำดับบรรทัดเดิมจะถูกรักษาไว้

สองบรรทัดถือว่าซ้ำกันเมื่อตรงกันทุกตัวอักษร อย่างไรก็ตาม ข้อมูลในชีวิตจริงมักไม่ยอมตรงกันแบบเป๊ะ ช่องว่างนำหน้าหรือตามหลัง การพิมพ์ตัวพิมพ์ใหญ่เล็กไม่สม่ำเสมอ และอักขระที่มองไม่เห็นอย่าง tab หรือ carriage return อาจทำให้บรรทัดที่ดูเหมือนกันถูกมองว่าแตกต่างกัน นั่นคือเหตุผลที่เครื่องมือลบข้อมูลซ้ำส่วนใหญ่มีตัวเลือกสำหรับการเปรียบเทียบแบบไม่คำนึงตัวพิมพ์และการตัดช่องว่างก่อนเปรียบเทียบ

การลบข้อมูลซ้ำเป็นการดำเนินการที่แตกต่างจากการเรียง คำสั่ง Unix sort -u จะเรียงและลบข้อมูลซ้ำพร้อมกัน ซึ่งเปลี่ยนลำดับบรรทัด หากต้องการรักษาลำดับเดิมของบรรทัด คุณต้องใช้วิธี seen-set ได้แก่ วนซ้ำผ่านบรรทัดตามลำดับ เพิ่มรูปแบบที่ปรับแล้วของแต่ละบรรทัดลงใน set และข้ามบรรทัดที่มีคีย์นั้นอยู่แล้ว เครื่องมือนี้ใช้วิธี seen-set ดังนั้นการปรากฏครั้งแรกจึงอยู่ในตำแหน่งเดิม

ทำไมต้องใช้ตัวลบบรรทัดซ้ำนี้?

วางข้อความของคุณ เลือกตัวเลือกการเปรียบเทียบ แล้วดูผลลัพธ์ที่ลบข้อมูลซ้ำแล้วทันที ไม่ต้องตั้งค่า command line ไม่ต้องเขียน regex ไม่ต้องอัปโหลดไฟล์

ลบข้อมูลซ้ำได้ทันที
ผลลัพธ์ปรากฏขณะที่คุณพิมพ์หรือวางข้อความ สลับการคำนึงถึงตัวพิมพ์และการตัดช่องว่างเพื่อดูว่าตัวเลือกต่างๆ ส่งผลต่อผลลัพธ์อย่างไรโดยไม่ต้องรันซ้ำ
🔒
ประมวลผลโดยให้ความเป็นส่วนตัวเป็นหลัก
การลบข้อมูลซ้ำทั้งหมดทำงานในเบราว์เซอร์ของคุณด้วย JavaScript ข้อความของคุณยังคงอยู่บนอุปกรณ์ของคุณและไม่มีการอัปโหลดไปยังเซิร์ฟเวอร์หรือบันทึกไว้ที่ใด
🎯
การเปรียบเทียบที่ปรับแต่งได้
เปิดใช้โหมดไม่คำนึงตัวพิมพ์เพื่อให้ "Apple" และ "apple" ถือเป็นบรรทัดเดียวกัน เปิดการตัดช่องว่างเพื่อละเว้นช่องว่างนำหน้าและตามหลังระหว่างการเปรียบเทียบ
📋
ไม่ต้องสมัครบัญชี
เปิดหน้าเว็บแล้วเริ่มลบข้อมูลซ้ำได้เลย ไม่ต้องสมัครสมาชิก ไม่ต้องติดตั้งส่วนเสริมหรือแอปพลิเคชันบนเครื่อง รองรับทุกอุปกรณ์ที่มีเบราว์เซอร์สมัยใหม่

กรณีการใช้งานตัวลบบรรทัดซ้ำ

การพัฒนา Frontend
ทำความสะอาดรายการ CSS class ลบคำสั่ง import ที่ซ้ำกัน หรือลบคีย์การแปล i18n ที่ซ้ำกัน การลบข้อมูลซ้ำก่อน commit ช่วยป้องกัน bundle ที่บวมและลดความขัดแย้งในการ merge
วิศวกรรม Backend
ลบรายการซ้ำใน requirements.txt, Gemfile หรือรายการ dependency ใน package.json หลังจาก merge branch ลบรายการซ้ำออกจาก allow-list, deny-list หรือตาราง routing
DevOps และโครงสร้างพื้นฐาน
ทำความสะอาดรายการซ้ำจากไฟล์ .env, รายการ host หรือ Kubernetes ConfigMap ตัวแปรสภาพแวดล้อมที่ซ้ำกันทำให้เกิดการแทนที่โดยไม่แสดงข้อผิดพลาด ดังนั้นการตรวจพบก่อน deploy จึงช่วยหลีกเลี่ยงบัก configuration ที่ตรวจหาสาเหตุได้ยาก
QA และการทดสอบอัตโนมัติ
ลบรหัส test case ที่ซ้ำกันจาก manifest การรัน test หรือคำยืนยันซ้ำในชุดทดสอบที่สร้างขึ้น ลบข้อความ error ซ้ำจาก log เพื่อดูชุดของความล้มเหลวที่ไม่ซ้ำกัน
วิศวกรรมข้อมูล
ตัดแถวซ้ำออกจากไฟล์ CSV ที่ export มาหรือผลลัพธ์ SQL query ที่วางเป็นข้อความ ทำความสะอาดรายการอีเมล, รายการ ID ผู้ใช้ หรือรายการ tag ก่อนนำเข้าสู่ฐานข้อมูลหรือ pipeline
นักเรียนและผู้เรียนรู้
ลบรายการซ้ำจากรายการคำศัพท์ บรรทัดบรรณานุกรม หรือบันทึกการเรียน วางเนื้อหาจากหลายแหล่งแล้วรับรายการที่สะอาดไม่ซ้ำโดยไม่ต้องติดตั้งแอปสเปรดชีต

การเปรียบเทียบวิธีลบข้อมูลซ้ำ

มีหลายวิธีในการลบบรรทัดซ้ำ แต่ละวิธีมีข้อแลกเปลี่ยนที่แตกต่างกันในด้านการรักษาลำดับ การใช้หน่วยความจำ และความแม่นยำ

วิธีการวิธีทำงานลำดับผลลัพธ์ที่ใช้
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

การตั้งค่าการคำนึงตัวพิมพ์และการจัดการช่องว่าง

มีสองตัวเลือกที่ควบคุมว่าเครื่องมือนี้ตัดสินใจว่าสองบรรทัดซ้ำกันหรือไม่ การเข้าใจว่าควรใช้ตัวเลือกไหนเมื่อใดช่วยป้องกันทั้ง false positive (มองบรรทัดต่างกันว่าซ้ำกัน) และ false negative (มองข้ามบรรทัดที่ควรตรงกัน)

คำนึงถึงตัวพิมพ์ (ค่าเริ่มต้น: เปิด)
เมื่อเปิดใช้ "Apple" และ "apple" จะถือเป็นบรรทัดต่างกัน ปิดตัวเลือกนี้เมื่อลบข้อมูลซ้ำจากข้อมูลที่ผู้ใช้ส่งมา รายการชื่อโดเมน หรือข้อความใดก็ตามที่การพิมพ์ตัวพิมพ์ใหญ่เล็กไม่สม่ำเสมอแต่ความหมายเหมือนกัน
ตัดช่องว่าง (ค่าเริ่มต้น: เปิด)
เมื่อเปิดใช้ ช่องว่างนำหน้า ตามหลัง และ tab จะถูกตัดออกก่อนการเปรียบเทียบ ช่วยตรวจจับบรรทัดที่ดูเหมือนกันแต่ต่างด้วยอักขระที่มองไม่เห็น ซึ่งพบบ่อยในผลลัพธ์ terminal ที่คัดลอกวาง ไฟล์ config แบบ indent และสิ่งแปลกปลอมจาก editor

ตัวอย่างโค้ด

ลบบรรทัดซ้ำด้วยโค้ดใน JavaScript, Python, Go และ command line แต่ละตัวอย่างแสดงการลบข้อมูลซ้ำโดยรักษาลำดับและจัดการการคำนึงตัวพิมพ์

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

คำถามที่พบบ่อย

ความแตกต่างระหว่างการลบข้อมูลซ้ำกับการใช้ sort -u คืออะไร?
คำสั่ง sort -u จะเรียงบรรทัดทั้งหมดตามตัวอักษรก่อน แล้วจึงลบบรรทัดซ้ำที่อยู่ติดกัน ซึ่งเปลี่ยนลำดับบรรทัดเดิม วิธี seen-set ที่เครื่องมือนี้ใช้จะวนซ้ำผ่านบรรทัดตามลำดับและข้ามบรรทัดที่ปรากฏแล้ว โดยรักษาลำดับเดิม ใช้ sort -u เมื่อต้องการผลลัพธ์ทั้งเรียงและไม่ซ้ำ ใช้วิธี seen-set เมื่อลำดับมีความสำคัญ
ข้อความของฉันถูกส่งไปยังเซิร์ฟเวอร์เมื่อลบข้อมูลซ้ำหรือไม่?
ไม่ การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณโดยใช้ JavaScript ข้อความไม่เคยออกจากอุปกรณ์ของคุณ คุณสามารถตรวจสอบได้โดยเปิดแท็บ Network ใน DevTools ของเบราว์เซอร์และยืนยันว่าไม่มีการส่งคำร้องขอเมื่อคุณวางข้อความและสลับตัวเลือก
เครื่องมือนี้รองรับบรรทัดได้มากแค่ไหน?
เครื่องมือทำงานได้ดีกับข้อมูลหลายหมื่นบรรทัด Set ใน JavaScript มีเวลาค้นหาเฉลี่ย O(1) ดังนั้นการลบข้อมูลซ้ำ 100,000 บรรทัดใช้เวลาต่ำกว่า 100 มิลลิวินาทีบนฮาร์ดแวร์สมัยใหม่ สำหรับไฟล์ที่ใหญ่กว่าสองสามเมกะไบต์ ให้ใช้ one-liner awk '!seen[$0]++' บน command line ซึ่งสตรีมผ่านไฟล์โดยไม่ต้องโหลดทั้งหมดลงในหน่วยความจำ
การลบข้อมูลซ้ำแบบไม่คำนึงตัวพิมพ์ทำงานอย่างไร?
เมื่อปิดการคำนึงตัวพิมพ์ แต่ละบรรทัดจะถูกแปลงเป็นตัวพิมพ์เล็กก่อนตรวจสอบกับ set ของบรรทัดที่เคยพบ เวอร์ชันตัวพิมพ์ต้นฉบับของการปรากฏครั้งแรกจะถูกเก็บไว้ในผลลัพธ์ ดังนั้นหากอินพุตมี "Apple" ในบรรทัดที่ 1 และ "apple" ในบรรทัดที่ 5 จะเก็บ "Apple" ไว้และลบ "apple" ออก
ฉันสามารถลบข้อมูลซ้ำและเรียงลำดับพร้อมกันได้หรือไม่?
เครื่องมือนี้ลบข้อมูลซ้ำโดยไม่เปลี่ยนลำดับบรรทัด หากต้องการผลลัพธ์ทั้งเรียงและไม่ซ้ำ ให้ใช้เครื่องมือ Line Sorter ในหมวดหมู่เดียวกันเพื่อเรียงข้อความก่อน แล้วนำผลลัพธ์ที่เรียงแล้วมาวางที่นี่เพื่อลบข้อมูลซ้ำที่เหลือ หรือจะใช้ sort -u บน command line เพื่อทำในขั้นตอนเดียว
จะเกิดอะไรขึ้นกับบรรทัดว่างและบรรทัดที่มีแต่ช่องว่าง?
บรรทัดว่างถูกจัดการเหมือนบรรทัดอื่นๆ หากข้อความมีบรรทัดว่างสามบรรทัด จะเก็บไว้เพียงบรรทัดแรก เมื่อเปิดการตัดช่องว่าง บรรทัดที่มีแต่ช่องว่างหรือ tab จะถูกปรับเป็นสตริงว่างก่อนเปรียบเทียบ ดังนั้นทั้งหมดจะถือเป็นข้อมูลซ้ำของบรรทัดว่างหรือบรรทัดที่มีแต่ช่องว่างบรรทัดแรก
จะลบข้อมูลซ้ำในไฟล์ CSV ตามคอลัมน์เฉพาะได้อย่างไร?
เครื่องมือนี้เปรียบเทียบบรรทัดทั้งหมด ไม่ใช่คอลัมน์เฉพาะ หากต้องการลบข้อมูลซ้ำใน CSV ตามคอลัมน์เฉพาะ ให้ใช้ awk พร้อมตัวคั่นช่อง: awk -F',' '!seen[$2]++' file.csv จะลบแถวที่มีค่าซ้ำในคอลัมน์ที่สอง ใน Python ให้ใช้ pandas: df.drop_duplicates(subset=['column_name']) สำหรับข้อมูล SQL ให้ใช้ SELECT DISTINCT หรือ GROUP BY บนคอลัมน์เป้าหมาย