Das Sortieren einer Liste klingt wie das am besten gelöste Problem in der Informatik, bis das Ergebnis zurückkommt file10 Oben file2Jeder großgeschriebene Name ist oben gebündelt $5 Am unteren Ende einer Preisliste gestrandet, und & quot; Apple" und & quot; apple" als zwei verschiedene Einträge gezählt Jeder von diesen ist die Sorte, die genau das tut, was ihr gesagt wurde Das Problem ist, dass & quot; alphabetical order" mehrere verschiedene Regeln verbirgt, und die Auswahl der falschen eine Liste erzeugt, die technisch sortiert und praktisch nutzlos ist.
In diesem Leitfaden werden die Ordnungsregeln erläutert, die für Alltagslisten von Bedeutung sind: Byte-Reihenfolge, locale-aware alphabetische Reihenfolge, natürliche Reihenfolge eingebetteter Zahlen, wahre numerische Reihenfolge und Längenreihenfolge Es behandelt auch, wie Reinigungsschritte wie das Trimmen und Entfernen von Duplikaten mit der Sortierung interagieren Die gearbeiteten Beispiele verwenden die Toolz-Liniensortierer, und jede angezeigte Ausgabe ist das, was ihr Code erzeugt.
tl; dr: Um Textzeilen zu sortieren, fügen Sie ein Element pro Zeile ein und wählen Sie einen Modus. Alphabetisch im Toolz-Zeilensortierer ist ortsbezogen und natürlich, also
item2Vor kommtitem10, und Ignorieren Fall (standardmäßig an) behält & quot; Apple" und & quot; apple" zusammen. Numerische Modus-Ordnungen nach der Zahl am Anfang jeder Zeile und versenkt nicht-numerische Zeilen nach unten Längenmodus-Ordnungen nach Zeichenanzahl Die Reinigung läuft vor dem Sortieren: Leerraum kürzen, Leerzeilen fallen lassen, dann Duplikate entfernen, die das erste Vorkommen behalten Die Online-Liniensortierer Client-seitig ist, kostenlos, keine Anmeldung und Updates während der Eingabe.
Was macht ein Zeilensortierer?
Ein Zeilensortierer nimmt einen Textblock, behandelt jede Zeile als ein Element und ordnet die Zeilen durch eine gewählte Regel neu, das gleiche Werkzeug reinigt die Liste normalerweise gleichzeitig: Streuspeicher beschneiden, Leerzeilen entfernen und Duplikate entfernen.
Die Toolz-Version bietet fünf Modi und vier Reinigungsoptionen:
| Einstellung | Was es tut | Standard |
|---|---|---|
| A bis Z | Ortsbezogene alphabetische Reihenfolge mit natürlicher Zahlenverarbeitung | Ausgewählt |
| numerisch | Ordnungen nach der Zahl, mit der jede Zeile beginnt | |
| Länge | Bestellungen nach Zeichenanzahl, am kürzesten zuerst | |
| Rückwärts | Die aktuelle Zeilenreihenfolge wird ohne Sortierung umgedreht | |
| Mischen | Zufällige Reihenfolge; Klicken Sie erneut, um das Problem neu zu mischen | |
| Herabsteigend | Verschiebt das Ergebnis von A nach Z, Numerisch oder Länge | Aus |
| Leerzeilen entfernen | Lässt Zeilen fallen, die leer oder nur Leerraum sind | Auf |
| Duplikate entfernen | Behält das erste Vorkommen jeder Zeile bei | Aus |
| Leerzeichen schneiden | Entfernt Leerzeichen und Tabulatoren an beiden Enden jeder Zeile | Aus |
| Fall ignorieren | Vergleicht Zeilen als Kleinbuchstaben zum Sortieren und Duplikate | Auf |
Das Ausgabefeld zeigt an, wie viele Leitungen herausgekommen sind und wie viele entfernt wurden, sodass Sie die Wirkung der Reinigungsmöglichkeiten auf einen Blick sehen können.
Warum kommt file10 vor file2?
Denn eine Klartextsortierung vergleicht Zeichenfolgen einzeln von links. file10 und file2 Übereinstimmung für vier Zeichen, dann ist das fünfte Zeichen 1 In einem und 2 Im anderen. Der Charakter 1 Sortiert vorher 2, So file10 Gewinnt, und der Vergleich betrachtet nie die Tatsache, dass 10 eine größere Zahl als 2 ist.
Die natürliche Sortierung behebt dies, indem sie jeden Ziffernlauf als Zahl liest Der Toolz-Zeilensortierer' s A bis Z-Modus macht das, indem er die in Browser' s integrierte Zusammenstellung mit eingeschaltetem numerischen Vergleich verwendet, die beschriebene Option für String.prototype.localeVergleichen Sie auf MDN. Die darunter liegenden Bestellregeln stammen aus dem Unicode-Kollationsalgorithmus, so entscheiden Browser, dass "e" sortiert in der Nähe von "e" statt nach "z".
Hier ist die gleiche Fünf-Punkte-Liste unter drei Regeln:
| Eingabe | Byte-Reihenfolge (LC_ALL=C sort) |
Zeichenreihenfolge, Gehäuse gefaltet | Natürliche Ordnung (Toolz A bis Z) |
|---|---|---|---|
item10 |
Item1 |
Item1 |
Item1 |
item2 |
item10 |
item10 |
item2 |
Item1 |
item2 |
item2 |
item3 |
item3 |
item3 |
item3 |
item10 |
zebra |
zebra |
zebra |
zebra |
Byte-Bestellung setzt Item1 Erstmal nur, weil ein Großbuchstabe I Einen niedrigeren Code hat als jeder Kleinbuchstabe Zeichenreihenfolge mit Gehäuseklappung fixiert das Großbuchstaben, setzt aber trotzdem item10 vor item2. Natürliche Ordnung bringt beides richtig.
Wie wirkt sich der Fall auf die alphabetische Sortierung aus?
In roher Byte-Reihenfolge sortiert jeder Großbuchstabe vor jedem Kleinbuchstaben, so dass sich eine Namensliste in zwei alphabetische Durchläufe aufteilen kann: alle großgeschriebenen Einträge zuerst, dann alle Kleinbuchstaben Die ortsbezogene Sortierung tut das nicht; sie behandelt Buchstaben zuerst als denselben Buchstaben und verwendet nur Kasus, um Bindungen zu lösen.
Die Option Fall ignorieren geht noch einen Schritt weiter und vergleicht alles als Kleinbuchstaben, wenn sich zwei Zeilen nur nach Fall unterscheiden, vergleichen sie als gleich, und die Sortierung hält sie in der Reihenfolge, in der sie in der Eingabe erschienen sind Das ist wichtig für Duplikate, die unten behandelt werden.
Gearbeitetes Beispiel mit dem eingebauten Muster
Klicken Sie auf & quot; Beispiel laden" und die Eingabe ist zehn Zeilen: banana, Apple, cherry, apple, 10, 2, Banana, date, eine leere Zeile, und grapedrohen
| Einstellungen | Ausgabe | Zählzahl gezeigt |
|---|---|---|
| Standardeinstellungen: A bis Z, Fall ignorieren, Leerzeilen entfernen | 2, 10, Apple, apple, banana, Banana, cherry, date, grape |
9 Zeilen, 1 entfernt |
| Hinzufügen Duplikate entfernen | 2, 10, Apple, banana, cherry, date, grape |
7 Zeilen, 3 entfernt |
| Duplikate entfernen, Fall ignorieren | 2, 10, apple, Apple, banana, Banana, cherry, date, grape |
9 Zeilen, 1 entfernt |
| Standardeinstellungen plus Absteigend | grape, date, cherry, Banana, banana, apple, Apple, 10, 2 |
9 Zeilen, 1 entfernt |
In jener Tabelle sind drei Einzelheiten sichtbar Zahlen stehen im alphabetischen Modus vor Buchstaben, und 2 Präzedenzfälle 10 Wegen der natürlichen Ordnung Mit Fall ignorieren an Apple Voraus bleibt apple Denn es erschien zuerst in der Eingabe Mit Ignorieren Fall aus, die browser' s collation platziert die Kleinbuchstabenform knapp vor der Großbuchstabenform, was das übliche Verhalten in englischsprachigen Browsern ist, und keine der Zeilen zählt als Duplikate, da sie nicht identisch sind Absteigend ist eine vollständige Umkehrung des aufsteigenden Ergebnisses, so dass gebundene Linien auch umdrehen.
Alphabetische vs. numerische Sortierung: Wann sollten Sie jedes verwenden?
Verwenden Sie den alphabetischen (natürlichen) Modus für Text, der Zahlen enthält, wie Dateinamen, Versionsbeschriftungen oder Straßenadressen. Verwenden Sie den numerischen Modus, wenn jede Zeile eine Zahl ist oder mit einer beginnt und Sie möchten, dass die Zeilen nach Wert geordnet sind.
Der numerische Modus liest die Zahl am Anfang jeder Zeile so, wie JavaScript's parseFloat Tut. Es überspringt führende Leerzeichen, liest ein optionales Vorzeichen, Ziffern, einen Dezimalpunkt und einen Exponenten und stoppt beim ersten Zeichen, das eine Zahl nicht fortsetzen kann Zeilen, die nicht mit einer Zahl beginnen, gehen nach unten und behalten ihre ursprüngliche Reihenfolge bei.
| Linie | Verwendeter Wert | Anmerkung |
|---|---|---|
42 |
42 | |
-7.5 |
-7,5 | Negativ - und Dezimalwerte funktionieren |
1e3 |
1000 | Wissenschaftliche Notation wird gelesen |
12 apples |
12 | Text nach der Nummer wird ignoriert |
1,000 |
1 | Das Lesen bleibt am Komma stehen |
$5 |
Keine Zahl | Senkt nach unten |
v2 |
Keine Zahl | Senkt nach unten |
Sortierung $5, 42, 1,000, -7.5, 12 apples, 1e3 Im numerischen Modus gibt:
-7.5
1,000
12 apples
42
1e3
$5
In dieser Ausgabe befinden sich zwei Fallen. 1,000 Sortiert als 1, denn Tausende Trennzeichen beenden die Zahl. Ziehen Sie sie zuerst mit Finden und ersetzen Wenn Ihre Daten sie nutzen Und $5 Nach unten gefallen; Währungssymbole entfernen, bevor die Preise sortiert werden.
Absteigen im numerischen Modus kehrt das ganze Ergebnis um, das heißt die nicht-numerischen Linien bewegen sich von unten nach oben, wenn man die Zahlen nur absteigend haben möchte, bereinigt man zuerst die nicht-numerischen Linien.
Wie funktioniert die Sortierung nach Länge?
Der Längenmodus ordnet Zeilen danach, wie viele Zeichen sie enthalten, zuerst am kürzesten oder zuerst am längsten mit absteigender Länge. Zeilen gleicher Länge behalten ihre Eingabereihenfolge.
Die Zählung ist die JavaScript-Stringlänge, die UTF-16-Codeeinheiten zählt. Für gewöhnliche Buchstaben, Ziffern und akzentuierte lateinische Zeichen entspricht das der Anzahl der sichtbaren Zeichen: café 4. Die meisten Emojis und einige seltene Zeichen verwenden zwei Codeeinheiten, so ok👍 Zählt als 4, nicht als 3. Für Listen von Wörtern, Namen oder URLs ist das selten wichtig.
Die Längensortierung ist praktisch, um Ausreißer zu erkennen: den ungewöhnlich langen Produkttitel, den verkürzten Eintrag oder die kürzesten Schlüsselwörter in einer Liste.
In welcher Reihenfolge erfolgt die Reinigung und Sortierung?
Die Schritte laufen immer in einer festen Reihenfolge ab, und die Reihenfolge erklärt die überraschendsten Ergebnisse:
- zerzausen Die Eingabe in Zeilen, die sowohl Unix- als auch Windows-Zeilenenden akzeptieren.
- trimmen Jede Zeile, wenn Trim Whitespace eingeschaltet ist.
- Leerzeilen entfernenWenn an. Eine Zeile, die nur Leerzeichen enthält, gilt als leer, auch bei Ausschneiden.
- Duplikate entfernen(wenn am. Das erste Vorkommen wird beibehalten Mit Ignorieren Fall auf zählen Linien, die sich nur nach Fall unterscheiden, als Duplikate, und das Gehäuse des ersten überlebt.
- Sortieren, rückwärts oder mischen Was bleibt.
Da das Trimmen optional und standardmäßig deaktiviert ist apple und apple (mit einem nachgestellten Leerzeichen) sind zwei verschiedene Zeilen, wenn Duplikate verglichen werden, es sei denn, Sie schalten Trim ein Das ist der häufigste Grund, warum ein & quot; duplicates" pass Einträge zu übersehen scheint Tabs, die aus einer Tabellenkalkulation eingefügt werden, den gleichen Effekt verursachen.
Bei schwereren Doppelarbeiten, wie z. B. dem Behalten des letzten Vorkommens oder dem Vergleich nur eines Teils jeder Zeile, ist die Duplicate Line Remover-Führung Vertieft die Optionen.
Reverse vs. Descending: Was ist der Unterschied?
Reverse dreht die aktuelle Reihenfolge der Zeilen um, ohne etwas zu sortieren. c, a, b wird b, a, c. Absteigend sortiert zuerst und dann umdreht, also c, a, b In A bis Z wird mit Absteigend c, b, adrohen
Verwenden Sie Reverse, wenn die ursprüngliche Reihenfolge etwas bedeutet, wie zum Beispiel eine Protokolldatei mit den ältesten Einträgen zuerst, und Sie möchten zuerst die neueste verwenden Absteigend, wenn Sie eine sortierte Liste von Z nach A oder von der größten zur kleinsten Liste wünschen Die Absteigende Schaltfläche ist im Modus Reverse und Shuffle deaktiviert, da sie nichts zu drehen hat.
Ist das Mischen zufällig genug?
Der Shuffle verwendet den Fisher-Yates-Algorithmus, der jeder möglichen Ordnung die gleiche Chance gibt, wenn ihre Zufallszahlen einheitlich sind, und diese Zahlen aus dem Browser & #39;s Math.random(). Das ist in Ordnung für die Randomisierung einer Leseliste, einer Playlist oder einer Präsentationsreihenfolge Es ist keine kryptografische Zufallsquelle, also die falsche Wahl für alles, wo jemand einen Grund haben könnte, das Ergebnis vorherzusagen oder zu bestreiten, wie z. B. eine Preisauslosung Für diejenigen, eine dedizierte Listen-zufallsgenerator Passt besser Klicken Sie erneut auf Mischen, um eine neue Bestellung zu erhalten.
Ist es sicher, sensible Listen online zu sortieren?
Mit diesem Tool ja. Sortieren und Bereinigen passieren client-seitig, in JavaScript in Ihrem Browser-Tab. Der Text wird nicht hochgeladen oder gespeichert, und das Tool arbeitet mit dem Netzwerk weiter aus, sobald die Seite geladen wurde Listen mit E-Mail-Adressen, Kundennamen oder internen Hostnamen verlassen nie Ihren Computer.
Die praktische Größenbeschränkung ist Ihr Browser' s Speicher statt einer Server-Cap Zehntausende Zeilen sortieren sofort auf einem typischen Laptop Sehr große Dateien, in den Hunderten von Megabyte, werden besser auf der Kommandozeile behandelt.
Was sind häufige Fehler beim Sortieren von Linien?
| Symptom | Ursache | Fix |
|---|---|---|
file10 Oben file2 In einem anderen Werkzeug |
Klarzeichenvergleich | Natursortierung verwenden (hier A bis Z) oder sort -V |
| Großgeschriebene Einträge alle an der Spitze | Byte-order-sortierung | Verwenden Sie einen ortsbezogenen Sortier- oder Ignorierfall |
| Duplikate nicht entfernt | Nachgestellte Leerzeichen oder Tabulatoren unterscheiden sich | Trim Whitespace einschalten |
| " Apple" und "apple" beide behalten | Ignorieren Fall ist aus | Schalten Sie den Fall ignorieren ein |
1,000 Sortiert als 1 |
Tausende Trennzeichen beendet die Zahl | Kommas vor der numerischen Sortierung entfernen |
Preise mit $ Unten |
Zeile beginnt nicht mit einer Zahl | Strip Währungssymbole zuerst |
| Absteigende numerische Liste beginnt mit Wörtern | Nicht-numerische Linien werden nach oben umgekehrt | Entfernen Sie zuerst nicht numerische Zeilen |
| Ausgabe hat ein weiteres & quot; entfernt" als erwartet | Eine nachlaufende Zeilenumbruchlinie erzeugte eine leere letzte Zeile | Erwartet; die leere Zeile wurde fallen gelassen |
Alternativen zu einem Online-Liniensortierer
| Werkzeug | Wie sortiert man | Notizen |
|---|---|---|
GNU sort |
sort -f (Faltschachtel), sort -n (numerisch), sort -V (natürlich), sort -u (einzigartig), sort -r (umgekehrt) |
Skriptfähig, verarbeitet riesige Dateien; siehe die GNU-Sortierhandbuch |
shuf |
shuf list.txt |
Zufällige Reihenfolge auf der Befehlszeile |
| Sortieren nach Länge in einer Schale | awk '{ print length, $0 }' list.txt | sort -n | cut -d' ' -f2- |
Zählt Bytes oder Zeichen je nach Gebietsschema |
| Tabellenkalkulation | In eine Spalte einfügen, Daten, Sortieren | Gut, wenn Zeilen mehrere Felder haben |
| Code-editoren | " Zeilen sortieren" Befehle in vielen Editoren | Das Verhalten variiert je nach Herausgeber |
| Toolz-Liniensortierer | Einfügen, klicken Sie auf einen Modus | Live-Vorschau, Reinigung in einem Durchgang, Client-Seite |
Beachten Sie, dass sort Ausgabe abhängig von der LC_ALL oder LANG Gebietsschemaeinstellung, weshalb derselbe Befehl auf zwei Maschinen unterschiedliche Befehle erteilen kann Einstellung LC_ALL=C Kraftbyteordnung.
Eine Liste sortieren, Schritt für Schritt
- Öffne das Textzeilensortierer und fügen Sie Ihre Liste ein, ein Element pro Zeile.
- Wählen Sie A bis Z für Wörter und Dateinamen, Numerisch für Zahlen oder Länge für Zeichenanzahl.
- Aktivieren Sie Trim Whitespace, wenn die Liste aus einem Dokument oder einer Tabellenkalkulation eingefügt wurde.
- Aktivieren Sie Duplikate entfernen, wenn Sie jeden Eintrag einmal haben möchten; Lassen Sie den Fall ignorieren eingeschaltet, um verschiedene Groß- und Kleinschreibung zusammenzuführen.
- Überprüfen Sie die Ausgabegrafzahl und das " entfernt" Nummer.
- Klicken Sie auf Kopieren.
Wenn die Liste auch normalisiert werden muss, ist die Fallwandlerführung Titel, Satz und andere Fälle erläutert, und die Textwerkzeug-Hub Sammelt den Rest der Textdienstprogramme an einem Ort.



