Zeilensortierer
Sortieren, umkehren, deduplizieren oder mischen Sie Textzeilen.
Sortiermodus
Über das Sortieren von Zeilen
Das Sortieren von Zeilen ordnet Text, indem jede Zeile nach einer gewählten Reihenfolge verglichen wird. Alphabetisches Sortieren ist nützlich für Listen, Glossare und Verzeichnisse. Numerisches Sortieren behandelt jede Zeile als Zahl und ordnet nach Wert. Längen-basiertes Sortieren gruppiert kurze und lange Einträge zusammen, was bei Formatierungs- und Layout-Aufgaben hilft.
Dieses Tool erlaubt zudem, doppelte Zeilen zu entfernen, leere Zeilen zu entfernen, Leerräume zu kürzen, die Reihenfolge umzukehren oder Zeilen zufällig zu mischen. Die gesamte Verarbeitung erfolgt sofort und in Ihrem Browser.
Häufige Anwendungsfälle
- Eine Liste von Namen, Artikeln oder Einträgen alphabetisch sortieren
- Werte aus CSV-Spalten oder Logeinträge sortieren
- Doppelte Zeilen aus einer Datei oder einem Datensatz entfernen
- Eine Liste für Verlosungen oder Spielzuweisungen mischen
- Zahlen vom kleinsten zum größten oder umgekehrt sortieren
- Daten bereinigen, indem Leerräume und leere Zeilen entfernt werden
Häufige Fragen
Wie funktioniert das numerische Sortieren?
Das numerische Sortieren extrahiert die führende Zahl jeder Zeile und ordnet nach diesem Wert. Zeilen, die nicht mit einer Zahl beginnen, werden ans Ende sortiert. Das bedeutet, dass „9 Artikel" vor „10 Artikel" steht (anders als beim alphabetischen Sortieren, wo „10" vor „9" käme).
Was bewirkt „Duplikate entfernen"?
Es entfernt Zeilen, die mehrfach vorkommen, und behält nur das erste Vorkommen. In Kombination mit „Groß-/Kleinschreibung ignorieren" werden auch Zeilen, die sich nur in der Groß-/Kleinschreibung unterscheiden, als Duplikate behandelt.
Ist das Mischen wirklich zufällig?
Das Mischen verwendet den Fisher-Yates-Algorithmus mit Math.random(). Es eignet sich für Alltagszwecke wie das Mischen von Listen oder das Ziehen von Namen. Es ist nicht kryptografisch sicher · für sicherheitsrelevante Zufälligkeit nutzen Sie ein dediziertes Tool.
Was ist Zeilensortierung?
Zeilensortierung ist die Operation, die die Zeilen einer Textdatei oder Liste nach einer gewaehlten Regel neu ordnet. Die Regel kann lexikografisch sein (Zeichen von links nach rechts nach ihrem Unicode-Codepoint vergleichen), numerisch (eine fuehrende Zahl extrahieren und Werte vergleichen), laengenbasiert (Zeichenzahlen vergleichen) oder zufaellig (ein Fisher-Yates-Shuffle, der eine gleichmaessig zufaellige Permutation erzeugt). Jede Regel beantwortet eine andere Frage zu Ihren Daten.
Dieses Tool stellt acht Sortiermodi (A bis Z, Z bis A, numerisch aufsteigend, numerisch absteigend, kuerzeste zuerst, laengste zuerst, mischen, umkehren) plus vier umschaltbare Optionen (Gross-Klein-unsensitiv, Leerzeichen entfernen, Duplikate entfernen, leere Zeilen entfernen) bereit. Die Kombinationen decken die alltaeglichen Listenbereinigungs-Workflows ab, die frueher einen Bash-Einzeiler mit sort, uniq, awk und einer Shell-Pipeline erforderten. Jetzt fuegen Sie die Zeilen ein, klicken auf einen Modus und ein paar Kontrollkaestchen, und lesen das Ergebnis.
Alle Berechnungen finden in Ihrem Browser mit JavaScripts eingebautem Array.prototype.sort statt, das seit 2018 TimSort (eine Hybridform aus Merge Sort und Insertion Sort, stabil und im schlimmsten Fall O(n log n)) in V8, JavaScriptCore und SpiderMonkey verwendet. Bei Listen unter einer Million Zeilen wird der Vorgang schneller abgeschlossen, als Sie die Maustaste loslassen koennen.
Was im Sortierer steckt
Die Oberflaeche stapelt drei Bedienelemente: ein Eingabe-Textbereich, in den Sie Ihre Zeilen einfuegen, eine Reihe von acht Modus-Schaltflaechen, die die aktive Auswahl hervorheben, und eine Reihe von vier Kontrollkaestchen fuer die Dedup-und-Trim-Optionen. Darunter befindet sich die Aktions-Schaltflaeche Zeilen sortieren, die den schreibgeschuetzten Ausgabe-Textbereich erzeugt und den Zeilenzaehler darunter aktualisiert.
Die Zeilenzaehler ueber und unter Eingabe und Ausgabe ermoeglichen es Ihnen, den Vorgang auf einen Blick zu pruefen: Wenn Sie mit 1.234 Zeilen begonnen haben und Duplikate entfernen angekreuzt haben, sagt Ihnen die Ausgabezahl sofort, wie viele Duplikate entfernt wurden. Diese Abkuerzung ist schneller als das Schreiben eines einmaligen Python- oder AWK-Skripts fuer dieselbe Aufgabe.
Drei Aktionen umhuellen den unteren Bereich: Ergebnis kopieren schreibt die Ausgabe ueber die Clipboard-API in Ihre Zwischenablage, .txt herunterladen speichert eine UTF-8-Textdatei mit LF-Zeilenenden, und Loeschen leert beide Textbereiche. Es wird keine Historie aufbewahrt, keine Einstellungen bleiben bestehen, und das Aktualisieren der Seite setzt das Tool auf seinen Standardzustand A-bis-Z zurueck.
Geschichte und Hintergrund
Hollerith-Lochkartensortierer (1890)
Herman Holleriths Lochkartensortierer, der fuer die US-Volkszaehlung von 1890 gebaut wurde, warf jede Karte basierend auf der Position eines gestanzten Lochs mechanisch in eines von 12 Faechern. Operatoren liessen die Karten mehrmals durch den Sortierer laufen, einmal pro Ziffer, um eine vollstaendige numerische Sortierung zu erzeugen. Die Technik wurde Radix-Sortierung genannt und untermauerte das Geschaeftscomputing in den naechsten 60 Jahren. IBM, 1911 als Computing-Tabulating-Recording Company gegruendet, wuchs direkt aus Holleriths Maschinen heraus.
John von Neumann beschreibt Merge Sort (1945)
In einem internen Bericht von 1945 ueber den EDVAC beschrieb John von Neumann den Merge Sort, den ersten Algorithmus, der fuer einen Computer mit gespeichertem Programm geschrieben wurde. Die Idee ist rekursiv: Teile die Liste in zwei Haelften, sortiere jede Haelfte, und mische dann die beiden sortierten Haelften, indem wiederholt das kleinere vordere Element genommen wird. Merge Sort bleibt ein Lehrbuchbeispiel fuer Teile-und-herrsche und ist die Basis von TimSort, dem Algorithmus, den V8 heute fuer Array.prototype.sort verwendet.
Tony Hoare erfindet Quicksort (1959)
Tony Hoare, damals ein 25-jaehriger, der die Moskauer Staatsuniversitaet besuchte, um Russisch zu lernen, entwarf 1959 Quicksort, waehrend er versuchte, eine Liste russischer Woerter gegen ein englisches Woerterbuch zu sortieren. Der Algorithmus waehlt einen Pivot, partitioniert die Liste darum und rekursiert auf jeder Seite. Durchschnittlicher Fall ist O(n log n), schlimmster Fall O(n quadrat), aber in der Praxis uebertrifft er Merge Sort aufgrund der Cache-Lokalitaet. Hoare gewann 1980 den Turing-Preis.
J.W.J. Williams fuehrt Heapsort ein (1964)
J.W.J. Williams veroeffentlichte 1964 Heapsort in Communications of the ACM. Der Algorithmus baut einen binaeren Heap (einen Baum, bei dem jeder Elternknoten mindestens so gross ist wie seine Kinder) und extrahiert wiederholt die Wurzel. Garantiert O(n log n) sowohl im Durchschnitts- als auch im schlimmsten Fall, kein zusaetzlicher Speicher, aber Cache-unfreundlich. Heapsort ist der Worst-Case-Fallback innerhalb von C++'s std::sort (Introsort, 1997).
ASCII fixiert die Sortierreihenfolge (1963 bis 1967)
ASCII, 1963 ratifiziert und 1967 ueberarbeitet, wies den Codes 48 bis 57 die Ziffern 0 bis 9 und 65 bis 90 die Grossbuchstaben A bis Z zu. Die Konvention, dass 0 vor 9 sortiert, das vor A sortiert, das vor Z sortiert (und dass Grossbuchstaben vor Kleinbuchstaben sortieren), ist in jede standardmaessige lexikografische Sortierung eingebaut, die die Welt seitdem produziert hat. Deshalb sortiert «Apple» vor «apple» und deshalb sortiert «10» vor «9», wenn Sie Strings Zeichen fuer Zeichen vergleichen.
Unicode-Kollations-Algorithmus (1996)
Das Unicode-Konsortium veroeffentlichte 1996 den ersten Unicode-Kollations-Algorithmus (UCA), kodifiziert als UTS #10. UCA gibt jedem Codepoint ein mehrstufiges Gewicht (primaer, sekundaer, tertiaer), sodass die Sortierung sprachsensitiv sein kann: Auf Deutsch kann ä je nach Kontext mit a oder nach z sortieren; auf Schwedisch sortiert å nach z; auf Spanisch sortiert ñ nach n. JavaScripts Intl.Collator (2014) umhuellt UCA und ist das, was korrektes sprachsensitives Listensortieren im Web antreibt.
Praktische Workflows
Alphabetisierung einer Namensliste
Sie haben eine Klassenliste, Teilnehmerliste oder einen Kontaktauszug, der aus einer Tabellenkalkulationsspalte eingefuegt wurde. Einfuegen, Gross-Klein-unsensitiv ankreuzen (damit «alice» und «Alice» zusammen sortieren), A bis Z klicken. Die Ausgabe ist bereit, in die Tabellenkalkulation zurueckkopiert oder in die BCC-Zeile einer E-Mail eingefuegt zu werden. Leerzeichen entfernen faengt die verstreuten Leerzeichen ab, die von Copy-Paste-Artefakten kommen.
Deduplizierung von Logeintraegen
Sie haben 5.000 Fehlermeldungen aus einem Server-Log exportiert und moechten die unterschiedlichen kennen. Einfuegen, Duplikate entfernen ankreuzen, A bis Z klicken. Die Ausgabezahl sagt Ihnen, wie viele eindeutige Fehler existieren. Kombinieren Sie mit Leerzeichen entfernen, wenn Logzeilen variable Einrueckung haben.
Ziehen von Namen fuer eine Lotterie oder Verlosung
Fuegen Sie die Teilnehmernamen ein, einen pro Zeile. Klicken Sie auf Mischen. Die erste Zeile der Ausgabe ist Ihr Gewinner, die zweite der Zweite, und so weiter. Die Fisher-Yates-Implementierung verwendet Math.random, das statistisch gleichmaessig, aber nicht kryptografisch sicher ist. Fuer Preisziehungen mit rechtlichen Implikationen fuehren Sie das Mischen auf einem Server mit einem CSPRNG aus.
Vorbereiten einer CSV-Spalte
Wenn eine CSV-Datei unsortierte Produkt-SKUs oder Kunden-IDs in einer Spalte hat, kopieren Sie die Spalte in einen Texteditor, fuegen Sie hier ein, sortieren Sie numerisch und fuegen Sie zurueck. Der numerische Modus behandelt SKUs wie «9», «10», «100» korrekt (lexikografisch wuerde sie 10, 100, 9 ordnen, was selten das ist, was Sie wollen).
Zwei Listen auf fehlende Elemente vergleichen
Sortieren Sie beide Listen mit denselben Optionen (A bis Z, Gross-Klein-unsensitiv, Leerzeichen entfernen). Fuegen Sie sie nebeneinander in ein Diff-Tool ein. Elemente, die in einer Liste, aber nicht in der anderen erscheinen, werden offensichtlich. Das ist schneller als das manuelle Scannen unsortierter Listen und funktioniert auch, wenn beide Listen Tausende von Eintraegen haben.
Sortieren eines Backlogs oder einer Aufgabenliste
Wenn Sie eine Aufgabenliste in einem Klartext-Editor schreiben und sie in Prioritaets- oder alphabetischer Reihenfolge zurueck haben moechten, fuegen Sie sie in den Sortierer ein. Verwenden Sie Laengste zuerst, um mehrstufige Aufgaben oben aufzudecken, oder Kuerzeste zuerst, um zuerst einfache Erfolge zu beseitigen. Reihenfolge umkehren ist nuetzlich, wenn die Originalliste bereits sortiert war, aber in die falsche Richtung.
Haeufige Fallstricke
Lexikografische vs numerische Sortierung
Standard-A-bis-Z-Sortierungen vergleichen Strings Zeichen fuer Zeichen, sodass «10» vor «9» kommt, weil «1» in ASCII vor «9» kommt. Verwenden Sie fuer numerische Daten stattdessen den numerischen Modus. Fuer gemischte alphanumerische Daten wie «file2.txt» vs «file10.txt» (natuerliche Sortierung) unterstuetzt dieses Tool die natuerliche Sortierung nicht direkt. Sie koennen es vortaeuschen, indem Sie Zahlen vor der Sortierung mit Nullen auffuellen.
Gross-Klein-Sensitivitaet ist standardmaessig aktiviert
Standardmaessig ist die Sortierung gross-klein-sensitiv: «Apple» sortiert vor «apple», weil das Grossbuchstabe A (65) vor dem Kleinbuchstaben a (97) in ASCII kommt. Wenn Sie eine gross-klein-unsensitive Sortierung wollen (alphabetisch ohne Beruecksichtigung der Grossschreibung), kreuzen Sie das Kontrollkaestchen Gross-Klein-unsensitiv an, bevor Sie auf Zeilen sortieren klicken.
Nachfolgende Leerzeichen brechen die Deduplizierung
«apple» und «apple » (mit nachfolgendem Leerzeichen) sind unterschiedliche Strings, sodass die Deduplizierung beide behaelt. Kreuzen Sie immer Leerzeichen entfernen neben Duplikate entfernen an, wenn Sie mit eingefuegten Daten umgehen, sonst wird die Dedup-Zahl durch das, was wie identische Zeilen aussieht, aufgeblaeht.
Sprachsensitive Sortierung wird nicht unterstuetzt
Dieses Tool verwendet die Standard-Unicode-Codepoint-Reihenfolge, die fuer Englisch und viele europaeische Sprachen korrekt ist, aber nicht fuer Deutsch (ä, ö, ü), Schwedisch (å, ä, ö), Spanisch (ñ) oder jede Schrift mit Kollationsregeln. Verwenden Sie fuer sprachsensitive korrekte Sortierung eine Tabellenkalkulation oder eine Programmiersprache mit Intl.Collator-Unterstuetzung.
Stabile Sortierung ist seit 2019 garantiert
Array.prototype.sort wurde ab Chrome 70 (2018) und Firefox 65 (2019) in allen wichtigen Browsern stabil. Davor konnten gleiche Elemente unvorhersehbar umgeordnet werden, was jeden Workflow brach, der von der Einfuegungsreihenfolge abhing. Dieses Tool stuetzt sich auf die moderne Stabilitaetsgarantie, sodass gleiche Zeilen in ihrer ursprueglichen relativen Reihenfolge bleiben.
Unicode-Normalisierung beeinflusst die Gleichheit
Das Zeichen é kann als einzelner Codepoint (U+00E9) oder als e plus kombinierender Akut-Akzent (U+0065 U+0301) kodiert werden. Sie sehen identisch aus, sind aber unterschiedliche Bytefolgen, sodass die Deduplizierung sie nicht abgleichen wird. Wenn Ihre Daten beide Formen mischen, normalisieren Sie zuerst mit NFC in einer Programmiersprache, oder erwarten Sie, dass Duplikate den Dedup-Durchgang ueberleben.
Datenschutz und Datenverarbeitung
Jede Zeile, die Sie einfuegen, wird in Ihrem Browser von einer kleinen JavaScript-Funktion sortiert. Es verlassen keine Daten Ihr Geraet. Wir loggen keine Eingaben, speichern keine Ausgaben, fuehren keine Analysen aus, die mit dem Textinhalt verknuepft sind, und laden keine Drittanbieter-SDKs, die die Textbereiche lesen koennten. Die Schaltflaechen Ergebnis kopieren und .txt herunterladen interagieren mit Ihrem Betriebssystem ueber Standard-Benutzergesten-APIs (Clipboard-API und den <a download>-Trick) und sind keinen aussenstehenden Parteien sichtbar.
Sobald die Seite geladen ist, funktioniert das Tool offline. Sie koennen sich vom Netzwerk trennen, in einem privaten Fenster oeffnen, in einer Unternehmens-Sandbox ausfuehren oder den Flugzeugmodus in einem Flug verwenden, und die Sortierung wird trotzdem abgeschlossen. Das macht das Tool sicher fuer vertrauliche Kundenlisten, interne SKUs und alle Daten, die nie einen Drittanbieter-Server beruehren sollten.
Wann ein Zeilensortierer nicht zu verwenden ist
Sortieren einer Tabellenkalkulationsspalte mit verwandten Zellen
Wenn Spalte A Namen und Spalte B entsprechende E-Mail-Adressen enthaelt, wird das Kopieren nur von Spalte A hierher und Sortieren die Zeilenbeziehung desynchronisieren. Verwenden Sie die eingebaute Sortierung der Tabellenkalkulation, die ganze Zeilen zusammen bewegt. Zeilensortierung ist fuer eigenstaendigen, zeilenunabhaengigen Text.
Sehr grosse Datensaetze (Millionen von Zeilen)
Das Tool haelt die gesamte Eingabe und Ausgabe im Speicher und laeuft synchron, was den Browser-Tab bei Eingaben mit mehreren Millionen Zeilen einfrieren kann. Fuer Datensaetze dieser Groesse verwenden Sie eine Kommandozeilen-Sortierung (Unix sort, sort -u, sort -n), die beliebig grosse Dateien ueber externen Merge Sort behandelt.
Echtzeit-Streaming-Daten
Wenn jede Sekunde neue Zeilen ankommen (wie ein Live-Log-Feed oder ein Websocket-Stream), kann dieses Tool nicht mithalten. Es ist fuer die Batch-Verarbeitung von statischem Text konzipiert. Fuer Streaming-Sortierung verwenden Sie eine Datenbank mit einem sortierten Index oder eine Programmiersprache mit einer Prioritaetswarteschlange.
Strukturierte Daten (JSON, CSV mit Zitierung)
JSON-Arrays, CSV-Dateien mit eingebetteten Kommas innerhalb zitierter Felder oder XML-Elemente sind nicht sicher als Klartext zu sortieren, weil ihre Trennzeichen ueber mehrere Zeilen reichen. Verwenden Sie einen JSON-bewussten Sortierer, einen CSV-Parser oder jq fuer die Sortierung strukturierter Daten.
Weitere Fragen
Welchen Sortieralgorithmus verwendet das Tool?
Das Tool verwendet das eingebaute Array.prototype.sort des Browsers, das TimSort in V8 (Chrome, Edge, Node.js seit 2018) und ein angepasstes Merge Sort in SpiderMonkey (Firefox) ist. Beide sind stabil, O(n log n) im schlimmsten Fall und fuer teilweise sortierte reale Daten optimiert. Sie koennen sie mit einer benutzerdefinierten JavaScript-Implementierung mit ziemlicher Sicherheit nicht schlagen.
Kann ich nach Sprache sortieren (Deutsch, Schwedisch, Chinesisch)?
Nicht in diesem Tool. Wir verwenden die Standard-Unicode-Codepoint-Reihenfolge. Verwenden Sie fuer sprachsensitive Sortierung (schwedisches å nach z, deutsches ß als ss, spanisches ñ nach n) eine Tabellenkalkulation mit Spracheinstellungen oder JavaScripts Intl.Collator in einem benutzerdefinierten Skript. Das Tool ist fuer englische Standard-Workflows gedacht.
Wie zufaellig ist die Option Mischen wirklich?
Das Mischen verwendet den Fisher-Yates-Algorithmus (Knuth 3.4.2) mit Math.random als Entropiequelle. Math.random in modernen Browsern verwendet xorshift128+ (Chrome seit 2015), das statistisch gleichmaessig ist und Zufaelligkeitstests besteht, aber nicht kryptografisch sicher ist. Verwenden Sie fuer Preisziehungen oder alles mit rechtlichem Gewicht crypto.getRandomValues oder einen serverseitigen CSPRNG.
Gibt es eine maximale Anzahl von Zeilen?
Keine harte Grenze. Das Tool bewaeltigt komfortabel 100.000 Zeilen auf einem Mid-Range-Laptop. Bei 1 Million Zeilen erwarten Sie eine Pause von einer bis drei Sekunden, waehrend der Browser die Sortierung durchfuehrt. Daruber hinaus wird der Textbereich selbst zum Engpass, und das Tool kann den Tab kurz haengen lassen. Verwenden Sie ein Kommandozeilen-Tool fuer sehr grosse Datensaetze.
Warum setzt meine numerische Sortierung «1.5» zwischen «1» und «2»?
Die numerische Sortierung parst die fuehrende Zahl mit parseFloat, das Dezimalpunkte (1.5), wissenschaftliche Notation (1e3), Negative (-5) und nach den Ziffern ignorierte abschliessende Einheiten erkennt. Wenn das Ergebnis keine Zahl ist, geht die Zeile ans Ende. Dieses Verhalten entspricht den meisten Benutzererwartungen, kann Sie aber bei gemischten Ganzzahl-und-Dezimal-Listen ueberraschen.
Wird die Sortierung meine Originaleingabe veraendern?
Nein. Der Eingabe-Textbereich bleibt unberuehrt. Die sortierte Ausgabe erscheint in einem separaten schreibgeschuetzten Textbereich. Sie koennen dieselbe Eingabe mehrmals mit verschiedenen Modi oder Optionen sortieren, ohne das Original zu verlieren. Die Loeschen-Schaltflaeche ist die einzige Moeglichkeit, die Eingabe zu loeschen, und sie fragt nicht nach Bestaetigung, also verwenden Sie sie bewusst.