ToolActToolAct

Text-Deduplizierungstool

Entfernen Sie schnell doppelte Inhalte aus Text, unterstützt Zeilen-, Wort- und Satz-Deduplizierung

Eingabetext
Dedupliziertes Ergebnis

Deduplizierungsmodus

Optionen

Statistiken

Ursprüngliche Elemente0
Einzigartige Elemente0
Doppelte Elemente0

Was ist Text-Deduplizierung?

Text Deduplicate entfernt wiederholte Zeilen, Wörter oder Einträge aus einem Text und hilft, Listen sauberer und besser prüfbar zu machen. Es ist nützlich für importierte CSV-Ausschnitte, Keyword-Listen, E-Mail-Sammlungen, Logfragmente, Produktcodes, Prompt-Varianten und Notizen, in denen Duplikate durch Kopieren, Zusammenführen oder fehlerhafte Exporte entstanden sind. Entscheidend sind die Vergleichsregeln: Groß- und Kleinschreibung, führende oder abschließende Leerzeichen, leere Zeilen, Satzzeichen und Reihenfolge können bestimmen, ob zwei Einträge wirklich gleich sind. Das Werkzeug beschleunigt die Bereinigung, ersetzt aber keine fachliche Prüfung, wenn ähnliche Einträge absichtlich getrennt bleiben müssen oder kleine Unterschiede eine Bedeutung tragen.

Anleitung

Grundoperationen

  1. Text zum Deduplizieren in das linke Textfeld eingeben oder einfügen.
  2. Den passenden Deduplizierungsmodus wählen (nach Zeile, Wort, Satz usw.).
  3. Bei Bedarf Optionen anpassen (Groß-/Kleinschreibung beachten, Reihenfolge beibehalten usw.).
  4. Echtzeit-Duplikatergebnisse und Statistiken rechts anzeigen.
  5. Auf die Kopierschaltfläche klicken, um Ergebnisse in die Zwischenablage zu kopieren.

Modusbeschreibung

  • Nach Zeile: Jede Zeile wird als eigenständige Einheit behandelt, identische Zeilen werden entfernt.
  • Nach Wort: Text wird nach Leerzeichen geteilt, doppelte Wörter werden entfernt.
  • Nach Satz: Text wird nach Punkten, Fragezeichen und Ausrufezeichen geteilt, doppelte Sätze werden entfernt.
  • Nach Absatz: Text wird nach Leerzeilen geteilt, doppelte Absätze werden entfernt.
  • Nach Zeichen: Zeichen, die mehrfach im Text vorkommen, werden entfernt.

Anwendungsfälle

Wiederholte Zeilen, Wörter, Sätze, Absätze oder Zeichen entfernenWählen Sie die zu deduplizierende Einheit, und das Werkzeug behält das erste Vorkommen bei, wobei die Reihenfolge einzigartiger Elemente erhalten bleibt. Jeder Modus verwendet eine passende Teil- und Verbindungsstrategie, sodass sich Zeilen-, Absatz-, Wort- und Zeichenworkflows unterschiedlich verhalten. Die Hash-Set-Suche läuft in O(n) pro Durchlauf, sodass auch lange Listen in einem einzigen Browser-Durchgang dedupliziert werden.
Duplikate vor dem Kopieren des bereinigten Textes prüfenDie Statistiken zeigen Ursprungsanzahl, einzigartige Anzahl und entfernte Duplikate. Die optionale Duplikatanzeige listet die gefundenen wiederholten Elemente auf – nützlich vor der Bereinigung von Mailinglisten, Keyword-Listen, Logs oder Umfrage-Exporten. Wenn Sie die Duplikatliste zuerst prüfen, können Sie bestätigen, dass die richtigen Einträge zusammengeführt wurden, bevor Sie die bereinigte Ausgabe teilen.
Groß-/Kleinschreibung-empfindliche Zuordnung steuernAktivieren Sie die Groß-/Kleinschreibung, wenn Apple und apple getrennt bleiben sollen, oder lassen Sie sie deaktiviert, wenn wiederholter Text unabhängig von der Großschreibung erkannt werden soll. So ist dasselbe Werkzeug sowohl für Prosa-Bereinigung als auch für exakte technische Listen nützlich. Der kleinschreibungs-empfindliche Modus normalisiert die Eingabe durch Kleinschreibung vor dem Hashing, sodass ein langes Log 'ERROR' und 'error' nicht als separate Einträge behält.
E-Mail- oder Tag-Listen unter Beibehaltung der Reihenfolge bereinigenFügen Sie einen E-Mail-Export ein und wechseln Sie in den Zeilenmodus mit kleinschreibungs-empfindlicher Zuordnung, um [email protected] und [email protected] zusammenzuführen. Die Reihenfolge des ersten Vorkommens bleibt erhalten, sodass die bereinigte Liste die ursprüngliche Gruppierung für den CSV-Import respektiert. Sortierstabilität ist hier wichtig: Die Ausgabe sollte die Eingabesequenz beibehalten und nicht alphabetisch umsortiert werden.
Leerzeichen vor der Deduplizierung von Keyword-Sets normalisierenEntfernen Sie führende und abschließende Leerzeichen und überspringen Sie leere Zeilen, damit versehentliche Tabulatoren aus Copy-Paste keine Phantom-Duplikate erzeugen. Das ist unverzichtbar, wenn die Quellliste aus einem Tabellenexport stammt, bei dem leere Zeilen und eingerückte Einträge die Duplikatzählung aufblähen. Ein zweiter Durchlauf auf der bereinigten Liste mit strengeren Regeln findet in der Regel keine weiteren Treffer – ein gutes Zeichen, dass die Normalisierung funktioniert hat.

Technisches Prinzip

Deduplizierung ist ein einstufiger Durchlauf, der auf einem JavaScript Set basiert. Das ECMAScript-Set verwendet den SameValueZero-Gleichheitsalgorithmus (dieselbe Vergleichslogik wie Array.prototype.includes, wobei NaN gleich NaN ist, aber +0 gleich -0). Die Spezifikation garantiert eine sublineare durchschnittliche Lookup-Zeit – V8 implementiert es als Hash-Tabelle mit offener Adressierung mit amortisiertem O(1) für Insert, sodass der gesamte Durchlauf O(n) in der Anzahl der Elemente beträgt. Der naive Ansatz – jedes Element in ein Ergebnis-Array zu pushen und indexOf aufzurufen – ist O(n²) und wird ab etwa 10.000 Einträgen langsam. Die Zerlegung ist modusspezifisch: Zeilenmodus teilt an /\r?\n/ auf, um sowohl CRLF (Windows) als auch LF (Unix) Zeilenenden zu erfassen, Wortmodus an /\s+/, Satzmodus an /(?<=[.!?])\s+/ und Absatzmodus an /\n{2,}/. Jede Einheit durchläuft optionale Normalisierer, bevor sie zum Set-Schlüssel wird: trim() zum Entfernen von führenden und abschließenden Leerzeichen, toLowerCase() für großschreibungsunempfindlichen Abgleich und String.prototype.normalize('NFC'), damit visuell identische Zeichenketten aus zusammengesetztem (é, U+00E9) und zerlegtem (e + U+0301) Zeichen zu einem einzigen Eintrag zusammenfallen. Die Reihenfolge bleibt erhalten, da das Ergebnis-Array in Iterationsreihenfolge aufgebaut wird – das Set dient nur als „Habe ich das schon gesehen?“-Filter. Dieselbe Datenstruktur liegt SQL DISTINCT und Python set() zugrunde; die einzige echte Alternative für zehn Millionen Elemente ist ein probabilistischer Bloom-Filter, der eine geringe False-Positive-Rate (ca. 1 % bei 10 Bit pro Element) gegen konstanten Speicher tauscht und für ein browserseitiges Text-Tool überdimensioniert ist.

  • Set-Suche verwendet den SameValueZero-Algorithmus (ECMA-262 §7.2.10) – NaN passt zu NaN, +0 passt zu -0, sonst strikte Gleichheit
  • V8 implementiert Set als Hash-Tabelle; insert und has sind amortisiert O(1), sodass die gesamte Deduplizierung O(n) gegenüber indexOf-basiertem O(n²) beträgt
  • Zeilenmodus-Regex /\r?\n/ behandelt CRLF, LF und abschließendes CR in einem einzigen Split; wird dies ignoriert, bleiben unsichtbare '\r'-Suffixe erhalten, die den exakten Abgleich vereiteln
  • Unicode-Normalisierung über String.prototype.normalize('NFC') fasst zusammengesetzte/zerlegte Formen (z. B. 'é' U+00E9 vs. 'e' + U+0301) zu einem Schlüssel zusammen
  • Großschreibungsunempfindlicher Modus setzt nur den Schlüssel klein – der Originalwert in Groß-/Kleinschreibung bleibt in der Ausgabe erhalten, sodass das erste 'ERROR' original beibehalten wird und spätere 'error'-Zeilen verworfen werden
  • Reihenfolgeerhaltung ist kostenlos: Das Ergebnis-Array wird in Eingabereihenfolge aufgebaut und das Set dient nur als Filter, sodass es sich wie SQL DISTINCT mit stabiler Sortierung verhält
  • Für 10 Mio.+ Elemente, bei denen der Speicher zum Engpass wird, ersetzt ein Bloom-Filter (ca. 10 Bit/Element für 1 % False-Positive-Rate) das Set – im Browser nicht nötig, da ein Set von 1 Mio. Strings bequem unter 100 MB bleibt

Beispiele

Zeilen-Deduplizierung, erstes Vorkommen behalten

Eingabe:
apple
banana
apple
orange
banana

Ausgabe:
apple
banana
orange

Zeilen-Deduplizierung mit Trimmen von Leerzeichen

Eingabe:
hello
  hello
hello 
world

Ausgabe (nach Trim):
hello
world

Deduplizierung ohne Berücksichtigung der Groß-/Kleinschreibung

Eingabe:
ERROR
error
Warning
WARNING
warning

Ausgabe (Groß-/Kleinschreibung ignoriert):
ERROR
Warning

Eindeutige E-Mail-Liste extrahieren

Eingabe:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com

Ausgabe (Groß-/Kleinschreibung ignoriert, Zeilenmodus):
alice@example.com
bob@example.com
carol@example.com

Wort-Deduplizierung

Eingabe: hello world hello again world

Ausgabe: hello world again

Satz-Deduplizierung

Eingabe: This is a test. This is a test. Another sentence.

Ausgabe: This is a test. Another sentence.

FAQ

Was gilt als Duplikat?

Jede Einheit (Zeile, Wort, Satz, Absatz oder Zeichen) wird mit den anderen verglichen. Identische Einheiten sind Duplikate. Groß-/Kleinschreibung kannst du an- oder abschalten. Die Seite gibt die deduplizierte Liste aus und meldet, wie viele Duplikate entfernt wurden.

Bleibt die Reihenfolge erhalten?

Ja – das erste Auftreten jedes eindeutigen Eintrags bleibt an seiner Originalposition, nachfolgende Duplikate werden verworfen. Die Ausgabe behält die ursprüngliche Reihenfolge bei.

Werden Leerzeilen als Duplikate behandelt?

Leerzeilen werden wie jede andere Zeile verglichen. Die erste Leerzeile bleibt erhalten; identische Leerzeilen weiter unten in der Eingabe werden zusammen mit anderen Duplikaten entfernt.

Kann nach einem Substring oder einer Spalte dedupliziert werden?

Nein. Die Deduplizierung arbeitet auf dem vollständigen Inhalt jeder Einheit (Zeile, Wort, Satz, Absatz oder Zeichen). Es gibt keinen spaltenbasierten oder substring-basierten Modus.

Wird die Ausgabe sortiert?

Nein. Die Ausgabe behält stets die ursprüngliche Reihenfolge. Eine Sortieroption gibt es nicht.

Wie groß darf die Datei sein?

Die Grenze ist der Browser-Speicher. Hunderttausende Zeilen funktionieren auf Desktop-Browsern. Dateien mit mehreren Millionen Zeilen sprengen den Speicher; nutze dafür ein CLI-Tool wie `sort -u` oder `awk '!seen[$0]++'`.

Wird mein Text hochgeladen?

Nein. Die Deduplizierung verwendet ein Set im Speicher deines Browsers. Eingefügte Zeilen werden nicht übertragen.