Sortera rader: sortera text alfabetiskt online
Klistra in en lista, välj ordning, få den sorterad. Med eller utan skiftlägeskänslighet, stigande eller fallande, med natural sort för filnamn och versionssträngar.
Vad är verktyget för att sortera rader?
Ett gratis verktyg som körs i webbläsaren, tar ett textblock, delar upp det på radbrytningar, sorterar raderna och ger dig resultatet. Ingen registrering, ingen uppladdning, inget lämnar din maskin. Klistra in, klicka, kopiera.
Det är motsvarigheten till att köra sort på kommandoraden, fast utan att behöva slåss med LC_COLLATE, det faktum att macOS levererar ett äldre BSD-sort, eller att Windows inte har sort alls om man inte installerar Git Bash. Tre kryssrutor täcker fallen man faktiskt vill ha: stigande eller fallande, med eller utan skiftlägeskänslighet, och natural sort så att file2 hamnar före file10.
Om du någonsin har klistrat in en lista beroenden i package.json och undrat varför npm sorterade om dem vid nästa install, så återskapar det här verktyget exakt det npm 7+ gör, så att diff:en blir tom när CI kör.
Hur sort:en faktiskt fungerar
Under huven använder verktyget webbläsarens Intl.Collator-API. Det ger dig en jämförelsefunktion som förstår Unicode på det sätt som Unicode Collation Algorithm (UTS #10) definierar, inte en rå codepoint-jämförelse. Praktisk skillnad: Intl.Collator vet att é sorteras intill e, att tyska ß jämförs lika med ss på primär nivå, och att stora och små bokstäver bara skiljer sig på tertiär nivå.
Lexicographic sort och locale-medveten sort är inte samma sak. En ren codepoint-sort (det LC_ALL=C sort ger) sätter varje versal före varje gemen, eftersom A är U+0041 och a är U+0061. En sort med Unicodes default-collation flätar in dem: A < a < B < b < C. Som standard kör vi den locale-medvetna ordningen, eftersom den motsvarar vad folk förväntar sig när de klickar Sortera A-Z i Excel eller Google Sheets. Bocka i rutan för skiftlägeskänslighet för att falla tillbaka på codepoint-liknande ordning.
Natural sort är den tredje axeln. På: file2.log kommer före file10.log, eftersom inbäddade tal jämförs som tal, inte tecken för tecken. Wikipedia har en ren förklaring av naturlig sorteringsordning om du vill ha bakgrunden. Implementationen använder alternativet numeric: true på Intl.Collator, samma primitiv som Finder, Utforskaren i Windows och senare versioner av GNU sort -V använder.
Sortera rader i tre steg
En inmatningsruta, en utmatningsruta. Allt körs lokalt; stäng fliken så är texten borta.
- 1
Klistra in dina rader
Släpp listan i editorn, ett objekt per rad. Tomma rader på slutet är ok. Både CRLF och LF fungerar; utdatat normaliseras till LF om du inte säger annat. Sample-knappen fyller editorn med en liten blandad lista om du vill se alla tre alternativen i aktion först.
- 2
Välj sort-alternativen
Välj Stigande eller Fallande, slå på Skiftlägeskänslig om du behöver att Apple ska komma före banana, och slå på Natural sort när det handlar om filnamn eller versioner. Ta bort tomma rader kastar tomma rader före sorteringen; Ta bort dubbletter slår ihop upprepningar.
- 3
Kopiera det sorterade resultatet
Tryck på Sort. Resultatet hamnar i utmatningsrutan. Använd Kopiera för att lägga det på urklippet, eller Ladda ner för att spara det som en .txt-fil. Radräknaren i sidhuvudet visar hur många rader som kom ut, vilket är användbart när du slagit på dedup och vill veta hur många dubbletter som plockades bort.
När det är rätt verktyg att sortera rader
Sortera en e-postlista före ett kampanjutskick
Marknad klistrar in en CSV med prenumeranters e-post i kampanjverktyget, men listan kom i registreringsordning. Sortera den först alfabetiskt här, med skiftlägesokänsligt på (e-postens lokala del är i praktiken skiftlägesokänslig), sedan dedupliciera. Importen i kampanjverktyget går snabbare och en domän med stavfel som gmial.com upptäcker du direkt eftersom den hamnar precis intill det legitima gmail.com-blocket.
Alfabetisera CSS-klassnamn eller ordning på HTML-attribut
Vissa team kräver alfabetiska klassnamn i class="..."-attribut för att hålla PR-diffs rena. Klistra in värdet, sortera, klistra tillbaka. Samma trick funkar för ordning på HTML-attribut när en linter klagar, eller för att sortera Tailwind utility-klasser för hand när prettier-plugin-tailwindcss inte är installerat i repot.
Sortera en .gitignore så framtida PR:er får ren diff
En .gitignore som alla lägger till i blir snabbt en skräplåda. Sortera den alfabetiskt en gång, committa det, och därefter hamnar tillägg på uppenbara platser och diff:en är begriplig för granskare. Samma sak gäller för .dockerignore, .eslintignore och files-arrayen i tsconfig.json när team håller en sådan.
Städa upp en TODO-lista inklistrad från chatten
Slack och Discord klistrar listor med konstig ordning, halvtomma rader och dubbletter från folk som sa samma sak två gånger. Klistra in, slå på Ta bort tomma rader och Ta bort dubbletter, sortera. Du får en ren, ordnad lista att slänga in i din uppgiftshanterare.
Sortera en lista med land-, flygplats- eller valutakoder
ISO 3166-landkoder, IATA-flygplatskoder, ISO 4217-valutakoder: alla bor i lookup-filer som tjänar på att vara sorterade. Natural sort behövs inte här, eftersom koderna har fast bredd, men skiftlägesokänsligt är viktigt eftersom vissa källor blandar USD med usd. Sortera, dedupliciera, klistra tillbaka i lookup-tabellen.
Sortera en lista med package.json-beroenden
Beroendenycklarna i package.json alfabetiseras av npm 7+ vid varje install, men om du redigerar i ett projekt som fortfarande är låst till npm 6 (eller yarn 1) ändras inte ordningen automatiskt. Klistra in beroendenycklarna, sortera A-Z, klistra tillbaka. Din nästa PR kommer inte ha en omsorteringscommit på 200 rader ovanpå själva ändringen.
Sortera rader: snabbreferens
Ett kort fusklapp över sort-alternativen som verktyget exponerar och kantfallen de täcker.
| Topic | What this tool does |
|---|
| Lexicographic vs collation | Lexicographic-(codepoint-)sort ordnar efter rått Unicode-värde: A (U+0041) före a (U+0061). Collation-sort följer Unicode Collation Algorithm och flätar in skiftlägena. Verktyget använder collation som standard; bocka i Skiftlägeskänslig för codepoint-ordning. |
|---|
| Skiftlägeskänslighet | Standard är okänslig: apple, Apple och APPLE jämförs som lika. Byt till känslig för ordningen A < a < B < b på tertiär collation-nivå, eller för rå codepoint-ordning kombinerat med C-locale. |
|---|
| Natural sort | På: file2 < file10 eftersom 2 och 10 jämförs som tal. Av: file10 < file2 eftersom 1 (U+0031) jämförs som mindre än 2 (U+0032) tecken för tecken. Använd det för filnamn, versionssträngar och varje lista med inbäddade tal. |
|---|
| Locale-medvetenhet | Sort:en respekterar sidans locale, så é ordnas intill e på franska, tyska ä sorteras som ae i DIN 5007-2-telefonkatalogsordning, och så vidare. Unix-sort gör samma sak om LC_COLLATE är satt; LC_ALL=C sort faller tillbaka på codepoint-ordning, snabbare men behandlar accenter som främmande bokstäver. |
|---|
| Hantering av tomma rader | Tomma rader sorteras före varje icke-tom rad i stigande ordning, så de klustras i toppen. Bocka i Ta bort tomma rader för att helt kasta dem. Avslutande nyrad i slutet av indatat behålls som den är så att utdatat round-trippar genom cat och liknande verktyg utan överraskningar. |
|---|
| Stabilitet | Sort:en är stabil: rader som jämförs lika under dina inställningar behåller sin ursprungliga inbördes ordning. Det spelar roll när du sorterar på ett prefix eller i skiftlägesokänsligt läge och vill bevara indataordningen inom en likagrupp. Både V8 (Chrome, Edge, Node) och SpiderMonkey (Firefox) garanterar stabilt Array.prototype.sort sedan 2019. |
|---|
| Radslut (LF vs CRLF) | Indata delas på \r\n, \n och \r. Utdata sammanfogas med \n som standard så det klistras rent i Linux- och macOS-flöden. Behöver du CRLF för ett Windows-verktyg, klistra in resultatet i en Windows-medveten editor och spara med det radslut du vill ha. |
|---|
| Kodning | Indata behandlas som UTF-8 (text i webbläsaren är redan avkodad). En inledande UTF-8-BOM bevaras på första raden om den finns; vill du strippa den, gör systerverktyget whitespace-cleaner det. |
|---|
Sortera rader: vanliga frågor
Vilken är standardordningen för sort?
Stigande och locale-medveten, med webbläsarens Intl.Collator i sidans locale. Det betyder A < a < B < b så som Excel och Google Sheets sorterar, inte den råa codepoint-ordningen där varje versal sorteras före varje gemen. Vill du ha codepoint-ordning, bocka i alternativet Skiftlägeskänslig, som ställer collator:n till en strikt tertiär jämförelse och ger samma ordning som LC_ALL=C sort.
Är sort:en skiftlägeskänslig eller inte?
Skiftlägesokänslig som standard. Apple, apple och APPLE kollapsar alla till samma nyckel, så de klustras i utdatat och deras inbördes ordning är den som dök upp först i indatat (sort:en är stabil). Bocka i Skiftlägeskänslig för att skilja dem; då sorteras APPLE, Apple och apple som tre distinkta värden enligt tertiär nivå i Unicodes default-collation.
Stöder den natural sort för filnamn som file2 före file10?
Ja. Slå på alternativet Natural sort så jämförs inbäddade tal som tal, så file2.log kommer före file10.log, och v1.9 före v1.10. Implementationen är alternativet numeric: true på Intl.Collator, samma primitiv som macOS Finder och Utforskaren i Windows använder för att ordna filnamn.
Kan jag sortera baklänges (Z till A)?
Ja. Välj Fallande i ordningstoggeln. Sort:en kör först i stigande ordning och vänds sedan, vilket bevarar stabiliteten över lika nycklar: om två rader jämförs lika under dina inställningar för skiftläge och natural sort behåller de sin ursprungliga inbördes ordning även efter att den vänts. Det spelar roll när du sorterar på en delnyckel som första kolumnen i en TSV.
Vad händer med dubblettrader och tomma rader?
Som standard behålls båda. Sort:en är stabil, så dubbletter behåller sin ursprungliga inbördes ordning, och tomma rader klustras i toppen i stigande ordning (de sorteras före varje icke-tom sträng). Bocka i Ta bort tomma rader för att kasta dem före sorteringen, och Ta bort dubbletter för att slå ihop lika rader till en. För en dedikerad dedup-omgång med fler alternativ, använd Ta bort dubblettrader.
Finns det en storleksgräns?
Upp till cirka 100 000 rader körs på under en sekund i webbläsaren. Förbi 500 000 rader börjar det märkas, främst för att rendera resultatrutan (inte sort:en själv) blir dyrt. För filer på flera miljoner rader är unix-kommandot sort med LC_ALL=C sort -u file.txt snabbare och kör out-of-core. GNU coreutils sort-manualen täcker flaggorna det är värt att kunna.
Integritet och hur det fungerar
Din text lämnar aldrig din webbläsare. Uppdelningen, jämförelsen och sammanfogningen körs lokalt. Ingen analys på din inmatning, inga loggar, ingen serverrundtur. Själva jämförelsen är webbläsarens egna Intl.Collator, som implementerar Unicode Collation Algorithm (UTS #10). Vill du ha bakgrundsläsning har Wikipedia en gedigen översikt över sorteringsalgoritmer i allmänhet.