Duplicate Line Remover

Odstraňte duplicitní řádky z textu, ponechte pouze jedinečné řádky

Zkusit příklad

Vstupní řádky

Jedinečné řádky

Běží lokálně · Bezpečné pro vkládání tajných údajů
Jedinečné řádky se zde zobrazí…

Co je odstranění duplicitních řádků?

Odstranění duplicitních řádků je proces, při kterém nástroj prochází blok textu řádek po řádku a ponechává pouze první výskyt každého unikátního řádku. Při online odstranění duplicit nástroj rozdělí vstup na základě znaků nového řádku, sleduje již zobrazené řádky pomocí datové struktury na bázi hashů (jako je Set) a na výstup předává pouze řádky, které dosud nebyly viděny. Původní pořadí řádků je zachováno.

Dva řádky jsou považovány za duplicitní, pokud se shodují přesně, znak po znaku. Reálná data však s přesným porovnáváním příliš nespolupracují. Úvodní nebo koncové bílé znaky, nekonzistentní velikost písmen a neviditelné znaky jako tabelátory nebo znaky návratu na začátek řádku mohou způsobit, že řádky vypadající identicky budou považovány za unikátní. Proto většina nástrojů pro deduplikaci nabízí možnosti porovnávání bez ohledu na velikost písmen a oříznutí bílých znaků před porovnáním.

Deduplikace je odlišná operace od třídění. Unixový příkaz sort -u současně třídí i odstraňuje duplicity, čímž mění pořadí řádků. Pokud potřebujete zachovat původní pořadí řádků, je třeba použít přístup se sledovací množinou: procházet řádky postupně, přidávat normalizovaný tvar každého řádku do množiny a přeskočit každý řádek, jehož klíč již existuje. Tento nástroj používá metodu sledovací množiny, takže první výskyty zůstávají na svých původních pozicích.

Proč použít tento nástroj?

Vložte text, zvolte možnosti porovnávání a okamžitě zobrazte výsledek bez duplicit. Žádné nastavování příkazové řádky, žádné psaní regulárních výrazů, žádné nahrávání souborů.

Okamžitá deduplikace
Výsledky se aktualizují při psaní nebo vkládání textu. Přepínejte rozlišování velikosti písmen a oříznutí bílých znaků a sledujte, jak různé možnosti ovlivňují výstup bez opakovaného spouštění.
🔒
Zpracování s důrazem na soukromí
Veškerá deduplikace probíhá ve vašem prohlížeči pomocí JavaScriptu. Váš text zůstává na vašem zařízení a není nikdy odeslán na server ani nikde zaznamenán.
🎯
Konfigurovatelné porovnávání
Zapněte režim bez ohledu na velikost písmen, aby byly "Apple" a "apple" považovány za stejný řádek. Aktivujte oříznutí bílých znaků pro ignorování úvodních a koncových mezer při porovnávání.
📋
Bez nutnosti účtu
Otevřete stránku a začněte odstraňovat duplicity. Žádná registrace, žádné rozšíření prohlížeče, žádná instalace do počítače. Funguje na jakémkoli zařízení s moderním prohlížečem.

Případy použití Duplicate Line Remover

Vývoj frontendu
Vyčistěte seznamy CSS tříd, odstraňte opakující se příkazy import nebo deduplikujte klíče překladů i18n. Odstranění duplicit před odevzdáním zabraňuje zbytečnému nafukování balíků a snižuje konflikty při slučování.
Backend inženýrství
Deduplikujte záznamy v requirements.txt, Gemfile nebo v seznamech závislostí package.json po sloučení větví. Odstraňte opakující se záznamy z allow-listů, deny-listů nebo směrovacích tabulek.
DevOps a infrastruktura
Vyčistěte duplicitní záznamy ze souborů .env, seznamů hostitelů nebo Kubernetes ConfigMap. Duplicitní proměnné prostředí způsobují tiché přepisy hodnot, takže jejich zachycení před nasazením zabraňuje těžko dohledatelným chybám konfigurace.
QA a testovací automatizace
Odstraňte opakující se ID testovacích případů z manifestů testovacích spuštění nebo duplicitní aserce ve vygenerovaných testovacích sadách. Deduplikujte chybové zprávy z výstupu logů, abyste viděli unikátní sadu selhání.
Datové inženýrství
Odstraňte duplicitní řádky z CSV exportů nebo výsledků SQL dotazů vložených jako text. Vyčistěte seznamy e-mailů, ID uživatelů nebo tagů před importem do databáze nebo datového pipeline.
Studenti a učící se
Odstraňte opakující se záznamy ze seznamů slovní zásoby, bibliografických citací nebo studijních poznámek. Vložte obsah z více zdrojů a získejte čistý, unikátní seznam bez nutnosti instalovat tabulkový procesor.

Srovnání metod deduplikace

Existuje několik přístupů k odstraňování duplicitních řádků, každý s různými kompromisy z hlediska zachování pořadí, využití paměti a přesnosti.

MetodaJak fungujePořadí výstupuKde se používá
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

Rozlišování velikosti písmen a zpracování bílých znaků

Dvě možnosti řídí, jak tento nástroj rozhoduje, zda jsou dva řádky duplicitní. Pochopení toho, kdy každou možnost použít, zabraňuje falešně pozitivním výsledkům (považování různých řádků za duplicitní) i falešně negativním výsledkům (přehlédnutí řádků, které by se měly shodovat).

Rozlišovat velikost písmen (výchozí: zapnuto)
Při zapnutí jsou "Apple" a "apple" považovány za různé řádky. Tuto možnost vypněte při deduplikaci uživatelsky zadaných dat, seznamů doménových jmen nebo jakéhokoli textu, kde je velikost písmen nekonzistentní, ale význam je stejný.
Oříznout bílé znaky (výchozí: zapnuto)
Při zapnutí jsou úvodní a koncové mezery a tabelátory odstraněny před porovnáním. Tím jsou zachyceny řádky, které vypadají identicky, ale liší se neviditelnými znaky — běžné u zkopírovaného výstupu terminálu, odsazených konfiguračních souborů a artefaktů editoru.

Příklady kódu

Odstraňte duplicitní řádky programově v JavaScriptu, Pythonu, Go a na příkazové řádce. Každý příklad demonstruje deduplikaci se zachováním pořadí a zpracování rozlišování velikosti písmen.

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

Časté dotazy

Jaký je rozdíl mezi odstraněním duplicit a použitím sort -u?
Příkaz sort -u nejprve seřadí všechny řádky abecedně a poté odstraní sousední duplicity. Tím se mění původní pořadí řádků. Přístup se sledovací množinou, který tento nástroj používá, prochází řádky v pořadí a přeskakuje každý řádek, který se již objevil, čímž zachovává původní posloupnost. Použijte sort -u, pokud chcete výstup seřazený i s odstraněnými duplicitami. Použijte přístup se sledovací množinou, pokud záleží na pořadí.
Jsou moje data odesílána na server při odstraňování duplicit?
Ne. Veškeré zpracování probíhá ve vašem prohlížeči pomocí JavaScriptu. Text nikdy neopustí vaše zařízení. Můžete to ověřit otevřením karty Síť v DevTools vašeho prohlížeče a potvrzením, že při vložení textu a přepínání možností nejsou odesílány žádné požadavky.
Kolik řádků tento nástroj zvládne?
Nástroj dobře funguje s desítkami tisíc řádků. Datová struktura Set v JavaScriptu má průměrnou dobu vyhledávání O(1), takže deduplikace 100 000 řádků trvá na moderním hardwaru méně než 100 milisekund. Pro soubory větší než několik megabajtů použijte jednořádkový příkaz awk '!seen[$0]++' na příkazové řádce, který soubor streamuje bez načítání celého obsahu do paměti.
Jak funguje deduplikace bez ohledu na velikost písmen?
Při vypnutém rozlišování velikosti písmen je každý řádek před kontrolou oproti množině zobrazených řádků převeden na malá písmena. V výstupu je zachována verze prvního výskytu v původní podobě. Pokud tedy váš vstup obsahuje "Apple" na řádku 1 a "apple" na řádku 5, je zachováno "Apple" a "apple" je odstraněno.
Mohu současně odstranit duplicity a seřadit řádky?
Tento nástroj odstraňuje duplicity bez změny pořadí řádků. Pro získání seřazeného, unikátního výstupu nejprve použijte nástroj Line Sorter ve stejné kategorii k seřazení textu, poté vložte seřazený výsledek sem k odstranění případných zbývajících duplicit. Alternativně použijte sort -u na příkazové řádce pro jednokrokové řešení.
Co se stane s prázdnými řádky a řádky obsahujícími pouze bílé znaky?
Prázdné řádky jsou zpracovávány jako každý jiný řádek. Pokud váš text obsahuje tři prázdné řádky, je zachován pouze první. Při zapnutém oříznutí bílých znaků jsou řádky obsahující pouze mezery nebo tabelátory před porovnáním normalizovány na prázdné řetězce, takže jsou všechny považovány za duplicity prvního prázdného nebo řádku s pouze bílými znaky.
Jak odstranit duplicity ze souboru CSV podle konkrétního sloupce?
Tento nástroj porovnává celé řádky, nikoli jednotlivé sloupce. Pro deduplikaci CSV podle konkrétního sloupce použijte awk s oddělovačem polí: awk -F',' '!seen[$2]++' file.csv odstraní řádky s duplicitními hodnotami ve druhém sloupci. V Pythonu použijte pandas: df.drop_duplicates(subset=['column_name']). Pro SQL data použijte SELECT DISTINCT nebo GROUP BY na cílovém sloupci.