0
Words
0
Characters
0
No spaces
0
Lines
0
Paragraphs
0
Sentences
0 min
Reading time
Lines to sort
Sorted output

Sortér linjer: sortér tekst alfabetisk online

Indsæt en liste, vælg en rækkefølge, få den sorteret. Med eller uden hensyn til store og små bogstaver, stigende eller faldende, med natural sort til filnavne og versionsstrenge.

Hvad er værktøjet til at sortere linjer?

Et gratis værktøj, der kører i browseren, tager en blok tekst, deler den på linjeskift, sorterer linjerne og giver dig resultatet. Ingen tilmelding, ingen upload, intet forlader din maskine. Indsæt, klik, kopiér.

Det svarer til at køre sort på kommandolinjen, blot uden at skulle slås med LC_COLLATE, det faktum at macOS leverer et ældre BSD-sort, eller at Windows slet ikke har sort, medmindre du installerer Git Bash. Tre afkrydsningsfelter dækker de tilfælde, du faktisk ønsker: stigende eller faldende, med eller uden hensyn til store og små bogstaver, og natural sort, så file2 kommer før file10.

Hvis du nogensinde har indsat en liste afhængigheder i package.json og undret dig over, hvorfor npm omsorterede dem ved næste install, gengiver dette værktøj præcis det, npm 7+ gør, så diff:en er tom, når CI kører.

Hvordan sort:en faktisk virker

Under motorhjelmen bruger værktøjet browserens Intl.Collator-API. Det giver dig en sammenligningsfunktion, der forstår Unicode på den måde, Unicode Collation Algorithm (UTS #10) definerer det, og ikke en rå codepoint-sammenligning. Praktisk forskel: Intl.Collator ved, at é sorteres ved siden af e, at det tyske ß sammenlignes lig med ss på primært niveau, og at store og små bogstaver kun adskilles på tertiært niveau.

Lexicographic sort og locale-bevidst sort er ikke det samme. En ren codepoint-sort (det LC_ALL=C sort giver) sætter alle store bogstaver før alle små, fordi A er U+0041 og a er U+0061. En sort med Unicodes default-collation fletter dem: A < a < B < b < C. Vi bruger som standard locale-bevidst rækkefølge, fordi den matcher det, folk forventer, når de trykker Sortér A-Z i Excel eller Google Sheets. Sæt flueben i case-sensitive for at falde tilbage til codepoint-stilens rækkefølge.

Natural sort er den tredje akse. Slået til kommer file2.log før file10.log, fordi indlejrede tal sammenlignes som tal, ikke tegn for tegn. Wikipedia har en pæn forklaring af naturlig sorteringsorden, hvis du vil have baggrunden. Implementationen bruger numeric: true-muligheden på Intl.Collator, samme primitive operation, som Finder, Stifinder og nyere versioner af GNU sort -V bruger.

Sortér linjer i tre trin

Ét inputpanel, ét outputpanel. Det hele kører lokalt; luk fanebladet, og din tekst er væk.

  1. 1

    Indsæt dine linjer

    Slip listen ned i editoren, ét punkt per linje. Tomme linjer i slutningen er fint. Både CRLF og LF virker; outputtet normaliseres til LF, medmindre du siger andet. Sample-knappen fylder editoren med en lille blandet liste, hvis du først vil se alle tre muligheder i aktion.

  2. 2

    Vælg sort-mulighederne

    Vælg Stigende eller Faldende, slå Skelner mellem store og små bogstaver til, hvis du har brug for, at Apple kommer før banana, og slå Natural sort til, når filnavne eller versioner er i spil. Fjern tomme linjer kasserer tomme rækker før sorteringen; Fjern dubletter samler gentagelser.

  3. 3

    Kopiér det sorterede resultat

    Tryk på Sort. Resultatet lander i outputpanelet. Brug Kopiér for at lægge det i udklipsholderen, eller Download for at gemme det som en .txt-fil. Linjetælleren i headeren viser, hvor mange rækker der kom ud, hvilket er nyttigt, når du har slået dedup til og vil vide, hvor mange dubletter der blev fjernet.

Hvornår sortering af linjer er det rette værktøj

Sortér en e-mailliste før udsendelse af en kampagne

Markedsføring indsætter en CSV med abonnenters mails i kampagneværktøjet, men listen kom i tilmeldingsrækkefølge. Sortér den først alfabetisk her, med skiftlejeufølsom slået til (mailens lokale del er i praksis ufølsom over for store og små bogstaver), og dedupliker derefter. Importen i kampagneværktøjet bliver hurtigere, og et fejlskrevet domæne som gmial.com opdager du straks, fordi det ligger lige ved siden af det legitime gmail.com-blok.

Alfabetisér CSS-klassenavne eller HTML-attributrækkefølge

Nogle hold påtvinger alfabetiske klassenavne i class="..."-attributter for at holde PR-diffs rene. Indsæt værdien, sortér, indsæt tilbage. Samme trick virker for HTML-attributrækkefølge, når en linter brokker sig, eller for at sortere Tailwind utility-klasser i hånden, når prettier-plugin-tailwindcss ikke er installeret i repoet.

Sortér en .gitignore, så fremtidige PR'er differ pænt

En .gitignore, som alle tilføjer til, bliver til en rodekasse. Sortér den alfabetisk én gang, commit det, og fra da af lander tilføjelser på indlysende steder, og diff:en giver mening for anmeldere. Det samme gælder .dockerignore, .eslintignore og files-arrayen i tsconfig.json, hvis hold holder en sådan.

Ryd op i en TODO-liste indsat fra chatten

Slack og Discord indsætter lister med underlig rækkefølge, halvtomme linjer og dubletter fra folk, der sagde det samme to gange. Indsæt, slå Fjern tomme linjer og Fjern dubletter til, sortér. Du får en ren, ordnet liste at smide ind i din opgavetracker.

Sortér en liste med lande-, lufthavns- eller valutakoder

ISO 3166-landekoder, IATA-lufthavnskoder, ISO 4217-valutakoder: alle bor i lookup-filer, der har gavn af at være sorteret. Natural sort er unødvendig her, da koderne har fast bredde, men ufølsomhed over for store og små bogstaver er vigtig, fordi nogle kilder blander USD med usd. Sortér, dedupliker, indsæt tilbage i lookup-tabellen.

Sortér en liste med package.json-afhængigheder

Afhængighedsnøglerne i package.json alfabetiseres af npm 7+ ved hver install, men hvis du redigerer i et projekt, der stadig er fastlåst på npm 6 (eller yarn 1), ændrer rækkefølgen sig ikke automatisk. Indsæt afhængighedsnøglerne, sortér A-Z, indsæt tilbage. Dit næste PR har ikke en omsorteringscommit på 200 linjer oven på den egentlige ændring.

Sortér linjer: hurtig reference

Et kort snydeark over de sort-muligheder, dette værktøj eksponerer, og de kanttilfælde, de dækker.

TopicWhat this tool does
Lexicographic vs collationLexicographic-(codepoint-)sort ordner efter rå Unicode-værdi: A (U+0041) før a (U+0061). Collation-sort følger Unicode Collation Algorithm og fletter bogstavskasus ind i hinanden. Værktøjet bruger collation som standard; sæt flueben i Skelner mellem store og små bogstaver for codepoint-rækkefølge.
Skelnen mellem store og små bogstaverStandard er ufølsom: apple, Apple og APPLE sammenlignes lige. Skift til følsom for rækkefølgen A < a < B < b på tertiært collation-niveau, eller for rå codepoint-rækkefølge, når det kombineres med C-locale.
Natural sortSlået til, file2 < file10, fordi 2 og 10 sammenlignes som tal. Slået fra, file10 < file2, fordi 1 (U+0031) er mindre end 2 (U+0032) tegn for tegn. Brug det til filnavne, versionsstrenge og enhver liste med indlejrede tal.
Locale-bevidsthedSort:en respekterer sidens locale, så é ordnes ved siden af e på fransk, det tyske ä sorteres som ae i DIN 5007-2-telefonbogsrækkefølge, og så videre. Unix-sort gør det samme, hvis LC_COLLATE er sat; LC_ALL=C sort falder tilbage til codepoint-rækkefølge, hurtigere men behandler accenter som fremmede bogstaver.
Håndtering af tomme linjerTomme linjer sorteres før enhver ikke-tom linje i stigende rækkefølge, så de klumper sig i toppen. Sæt flueben i Fjern tomme linjer for at kassere dem helt. En afsluttende newline i slutningen af inputtet beholdes, som den er, så outputtet round-tripper gennem cat og lignende værktøjer uden overraskelser.
StabilitetSort:en er stabil: linjer, der sammenlignes lige under dine indstillinger, beholder deres oprindelige indbyrdes rækkefølge. Det betyder noget, når du sorterer på et præfiks eller i skiftlejeufølsom tilstand og vil bevare inputtens rækkefølge inden for en lighedsgruppe. Både V8 (Chrome, Edge, Node) og SpiderMonkey (Firefox) garanterer stabil Array.prototype.sort siden 2019.
Linjeskift (LF vs CRLF)Input deles på \r\n, \n og \r. Output samles med \n som standard, så det indsættes pænt i Linux- og macOS-flows. Har du brug for CRLF til et Windows-værktøj, indsæt resultatet i en Windows-bevidst editor og gem med det linjeskift, du vil have.
TegnkodningInput behandles som UTF-8 (tekst i browseren er allerede afkodet). En indledende UTF-8-BOM bevares på første linje, hvis den er der; vil du strippe den, fjerner søsterværktøjet whitespace-cleaner den.

Sortér linjer: ofte stillede spørgsmål

Hvad er standardrækkefølgen for sort?

Stigende og locale-bevidst, med browserens Intl.Collator i sidens locale. Det betyder A < a < B < b, sådan som Excel og Google Sheets sorterer, ikke den rå codepoint-rækkefølge, hvor hvert stort bogstav kommer før hvert lille. Vil du have codepoint-rækkefølge, sæt flueben i Skelner mellem store og små bogstaver: det stiller collator:en til en streng tertiær sammenligning og giver samme rækkefølge som LC_ALL=C sort.

Skelner sort:en mellem store og små bogstaver?

Som standard ikke. Apple, apple og APPLE kollapser alle til samme nøgle, så de klumper sig sammen i outputtet, og deres indbyrdes rækkefølge er den, der dukkede op først i inputtet (sort:en er stabil). Sæt flueben i Skelner mellem store og små bogstaver for at adskille dem; så sorteres APPLE, Apple og apple som tre forskellige værdier i henhold til tertiært niveau i Unicodes default-collation.

Understøtter den natural sort for filnavne som file2 før file10?

Ja. Slå Natural sort-muligheden til, så sammenlignes indlejrede tal som tal, så file2.log kommer før file10.log, og v1.9 kommer før v1.10. Implementationen er numeric: true-muligheden på Intl.Collator, samme primitive operation, som macOS Finder og Stifinder bruger til at ordne filnavne.

Kan jeg sortere baglæns (Z til A)?

Ja. Vælg Faldende i rækkefølge-toggle. Sort:en kører først stigende og vendes derefter, hvilket bevarer stabiliteten på tværs af lige nøgler: hvis to linjer sammenlignes lige under dine indstillinger for skiftleje og natural sort, beholder de deres oprindelige indbyrdes rækkefølge selv efter vendingen. Det betyder noget, når du sorterer på en delnøgle som første kolonne i en TSV.

Hvad sker der med dublerede linjer og tomme linjer?

Som standard beholdes begge. Sort:en er stabil, så dubletter beholder deres oprindelige indbyrdes rækkefølge, og tomme linjer klumper sig i toppen i stigende rækkefølge (de sorteres før enhver ikke-tom streng). Sæt flueben i Fjern tomme linjer for at kassere dem før sorteringen, og Fjern dubletter for at smelte lige linjer sammen til én. For en dedikeret dedup-omgang med flere muligheder, brug Fjern dublerede linjer.

Er der en størrelsesgrænse?

Op til omkring 100.000 linjer kører på under et sekund i browseren. Forbi 500.000 linjer begynder du at mærke det, primært fordi det at rendere resultatpanelet (ikke selve sort:en) bliver dyrt. For filer på flere millioner linjer er unix-kommandoen sort med LC_ALL=C sort -u file.txt hurtigere og kører out-of-core. GNU coreutils sort-manualen dækker de flag, det er værd at kende.

Privatliv og sådan virker det

Din tekst forlader aldrig din browser. Opdelingen, sammenligningen og sammensætningen kører alt sammen lokalt. Ingen analyse på dit input, ingen logs, ingen serverrunde. Selve sammenligningen er browserens egen Intl.Collator, der implementerer Unicode Collation Algorithm (UTS #10). Vil du have baggrundslæsning, har Wikipedia et solidt overblik over sorteringsalgoritmer generelt.