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

Ordinare righe: ordina testo alfabeticamente online

Incolli una lista, scegli un ordine, la ottieni ordinata. Con o senza distinzione tra maiuscole e minuscole, ascendente o discendente, con natural sort per nomi di file e stringhe di versione.

Cos'è lo strumento per ordinare righe?

Uno strumento gratuito che gira nel browser: prende un blocco di testo, lo divide sui ritorni a capo, ordina le righe e ti restituisce il risultato. Niente registrazione, niente upload, niente lascia la tua macchina. Incolla, clicca, copia.

Equivale a eseguire sort da riga di comando, solo che qui non devi combattere con LC_COLLATE, col fatto che macOS porta un vecchio sort BSD, o col fatto che Windows non ha sort a meno di installare Git Bash. Tre checkbox coprono i casi che davvero servono: ascendente o discendente, con o senza distinzione tra maiuscole e minuscole, e natural sort perché file2 arrivi prima di file10.

Se ti è mai capitato di incollare una lista di dipendenze in package.json e di chiederti perché npm le ha riordinate al successivo install, questo strumento riproduce ciò che fa npm 7+ così il diff resta vuoto quando gira la CI.

Come funziona davvero il sort

Sotto al cofano lo strumento usa l'API Intl.Collator del browser. Questo ti dà una funzione di confronto che capisce Unicode così come la definisce l'Unicode Collation Algorithm (UTS #10), e non un confronto grezzo per codepoint. Differenza pratica: Intl.Collator sa che é si ordina accanto a e, che la ß tedesca confronta uguale a ss al livello primario, e che maiuscole e minuscole differiscono solo al livello terziario.

Sort lessicografico e sort consapevole della locale non sono la stessa cosa. Un sort puro per codepoint (quello che dà LC_ALL=C sort) mette ogni maiuscola prima di ogni minuscola, perché A è U+0041 e a è U+0061. Un sort con la collation Unicode di default le interleave: A < a < B < b < C. Per default usiamo l'ordine consapevole della locale, perché coincide con ciò che la gente si aspetta cliccando Sort A-Z in Excel o Google Sheets. Spunta la casella case-sensitive per tornare all'ordine in stile codepoint.

Natural sort è il terzo asse. Attivo, file2.log arriva prima di file10.log perché i numeri incorporati vengono confrontati come numeri, non carattere per carattere. Wikipedia ha una spiegazione pulita dell'ordinamento alfanumerico se vuoi il contesto. L'implementazione usa l'opzione numeric: true di Intl.Collator, la stessa primitiva che usano Finder, Esplora risorse di Windows e versioni recenti di GNU sort -V.

Come ordinare righe in tre passi

Un pannello di input, un pannello di output. Tutto gira in locale; chiudi la scheda e il tuo testo sparisce.

  1. 1

    Incolla le righe

    Lascia cadere la lista nell'editor, una voce per riga. Le righe vuote in fondo non sono un problema. CRLF e LF funzionano entrambi; l'output è normalizzato a LF salvo diverse istruzioni. Il pulsante Sample riempie l'editor con una piccola lista mista se vuoi vedere prima le tre opzioni in azione.

  2. 2

    Scegli le opzioni di sort

    Scegli Ascendente o Discendente, attiva Case-sensitive se ti serve che Apple arrivi prima di banana, e accendi Natural sort quando ci sono nomi di file o versioni di mezzo. Rimuovi righe vuote scarta le righe vuote prima di ordinare; Rimuovi duplicati compatta le ripetizioni.

  3. 3

    Copia il risultato ordinato

    Clicca Sort. Il risultato finisce nel pannello di output. Usa Copia per metterlo negli appunti, o Scarica per salvarlo come file .txt. Il contatore di righe in alto mostra quante righe sono uscite, utile quando hai attivato la deduplica e vuoi sapere quanti duplicati sono stati rimossi.

Quando ordinare righe è lo strumento giusto

Ordinare una lista di email prima di lanciare una campagna

Marketing incolla un CSV di email di iscritti nello strumento di campagne, ma la lista arriva in ordine di iscrizione. Ordinala prima qui alfabeticamente, con case-insensitive attivo (la parte locale di un'email in pratica è insensibile alle maiuscole), poi deduplica. L'import nello strumento di campagne sarà più rapido e individui subito un dominio scritto male come gmial.com perché si trova accanto al blocco legittimo gmail.com.

Alfabetizzare nomi di classi CSS o ordine degli attributi HTML

Alcuni team impongono nomi di classe in ordine alfabetico negli attributi class="..." per tenere puliti i diff dei PR. Incolli il valore, ordini, lo rimetti dentro. Lo stesso trucco vale per l'ordine degli attributi HTML quando un linter protesta, o per ordinare a mano le classi utility di Tailwind quando non hai prettier-plugin-tailwindcss installato nel repo.

Ordinare un .gitignore così i PR futuri hanno diff puliti

Un .gitignore a cui tutti aggiungono diventa un cassetto delle cianfrusaglie. Ordinalo alfabeticamente una volta, fai commit, e da lì in avanti le aggiunte cadono in posti ovvi e il diff ha senso per chi rivede. Lo stesso vale per .dockerignore, .eslintignore e l'array files in tsconfig.json quando i team lo mantengono.

Pulire una lista di TODO incollata dalla chat

Slack e Discord sputano fuori liste con ordinamento strano, righe a metà vuote e duplicati di chi ha detto la stessa cosa due volte. Incolli, attivi Rimuovi righe vuote e Rimuovi duplicati, ordini. Ottieni una lista pulita e ordinata da buttare nel tuo task tracker.

Ordinare una lista di codici paese, aeroporto o valuta

Codici paese ISO 3166, codici aeroportuali IATA, codici valuta ISO 4217: vivono tutti in file di lookup che traggono vantaggio dall'essere ordinati. Natural sort qui non serve perché i codici hanno larghezza fissa, ma il case-insensitive conta perché alcune fonti mischiano USD con usd. Ordina, deduplica, rimetti nella tabella di lookup.

Ordinare una lista di dipendenze di package.json

Le chiavi delle dipendenze in package.json vengono alfabetizzate da npm 7+ a ogni install, ma se stai modificando un progetto ancora bloccato a npm 6 (o yarn 1) l'ordine non cambia da solo. Incolli le chiavi delle dipendenze, ordini A-Z, rimetti dentro. Il prossimo PR non avrà un commit di riordino di 200 righe sopra alla modifica vera.

Ordinare righe: riferimento rapido

Un piccolo bigino sulle opzioni di sort che questo strumento espone e sui casi limite che coprono.

TopicWhat this tool does
Lessicografico vs collationIl sort lessicografico (per codepoint) ordina per valore Unicode grezzo: A (U+0041) prima di a (U+0061). Il sort per collation segue l'Unicode Collation Algorithm e interleavia maiuscole e minuscole. Questo strumento usa collation per default; spunta Case-sensitive per l'ordine per codepoint.
Sensibilità alle maiuscoleDefault insensibile: apple, Apple e APPLE confrontano uguali. Passa a sensibile per l'ordine A < a < B < b al livello terziario della collation, oppure per l'ordine grezzo per codepoint quando combinato con la locale C.
Natural sortAttivo, file2 < file10 perché 2 e 10 sono confrontati come numeri. Spento, file10 < file2 perché 1 (U+0031) è minore di 2 (U+0032) carattere per carattere. Usalo per nomi di file, stringhe di versione e qualsiasi lista con numeri incorporati.
Consapevolezza della localeIl sort rispetta la locale della pagina: é si ordina accanto a e in francese, la ä tedesca ordina come ae nell'ordine elenco telefonico DIN 5007-2, e così via. Il sort di unix fa lo stesso se LC_COLLATE è impostato; LC_ALL=C sort torna all'ordine per codepoint, più rapido ma tratta gli accenti come lettere aliene.
Gestione delle righe vuoteLe righe vuote ordinano prima di qualsiasi riga non vuota in ordine ascendente, quindi si raggruppano in cima. Spunta Rimuovi righe vuote per eliminarle del tutto. Un newline finale a fine input viene mantenuto com'è, così l'output fa round-trip attraverso cat e simili senza sorprese.
StabilitàIl sort è stabile: le righe che confrontano uguali con le tue impostazioni mantengono l'ordine relativo originale. Conta quando ordini su un prefisso o in modalità case-insensitive e vuoi preservare l'ordine d'input dentro un gruppo di pareggio. Sia V8 (Chrome, Edge, Node) sia SpiderMonkey (Firefox) garantiscono Array.prototype.sort stabile dal 2019.
Fine riga (LF vs CRLF)L'input viene diviso su \r\n, \n e \r. L'output viene unito con \n per default così si incolla pulito in flussi Linux e macOS. Se ti serve CRLF per uno strumento Windows, incolla il risultato in un editor che riconosce Windows e salva col fine riga che vuoi.
CodificaL'input è trattato come UTF-8 (il testo nel browser arriva già decodificato). Un BOM UTF-8 iniziale viene preservato sulla prima riga se presente; se vuoi toglierlo, lo strumento gemello whitespace-cleaner lo rimuove.

Ordinare righe: domande frequenti

Qual è l'ordine di sort di default?

Ascendente consapevole della locale, usando Intl.Collator del browser con la locale della pagina. Significa A < a < B < b come ordinano Excel e Google Sheets, non l'ordine grezzo per codepoint dove ogni maiuscola sta prima di ogni minuscola. Se vuoi l'ordine per codepoint, spunta l'opzione Case-sensitive: passa il collator a un confronto stretto a livello terziario e dà lo stesso ordine di LC_ALL=C sort.

Il sort distingue maiuscole e minuscole?

Per default non le distingue. Apple, apple e APPLE collassano sulla stessa chiave, quindi nell'output si raggruppano e il loro ordine relativo è quello del primo apparso in input (il sort è stabile). Spunta Case-sensitive per separarle; in quel caso APPLE, Apple e apple vengono ordinate come tre valori distinti secondo il livello terziario della collation Unicode di default.

Supporta natural sort per nomi tipo file2 prima di file10?

Sì. Attiva l'opzione Natural sort e i numeri incorporati vengono confrontati come numeri, quindi file2.log arriva prima di file10.log, e v1.9 prima di v1.10. L'implementazione è l'opzione numeric: true su Intl.Collator, la stessa primitiva che Finder di macOS ed Esplora risorse di Windows usano per ordinare i nomi dei file.

Posso ordinare al contrario (Z ad A)?

Sì. Scegli Discendente nel selettore d'ordine. Il sort gira prima in ordine ascendente, poi viene invertito, il che preserva la stabilità tra chiavi uguali: se due righe confrontano uguali con le tue impostazioni di case e natural sort, mantengono il loro ordine relativo originale anche dopo l'inversione. Conta quando ordini su una chiave parziale come la prima colonna di un TSV.

Cosa succede a righe duplicate e righe vuote?

Per default si tengono entrambe. Il sort è stabile, quindi i duplicati mantengono il loro ordine relativo originale, e le righe vuote si raggruppano in cima in ordine ascendente (ordinano prima di qualsiasi stringa non vuota). Spunta Rimuovi righe vuote per scartarle prima del sort, e Rimuovi duplicati per compattare le righe uguali in una sola. Per un passaggio di dedup dedicato con più opzioni, usa Rimuovi righe duplicate.

C'è un limite di dimensione?

Fino a circa 100.000 righe gira sotto al secondo nel browser. Oltre le 500.000 inizi a sentirlo, soprattutto perché renderizzare il pannello di risultato (non il sort in sé) diventa costoso. Per file da milioni di righe, il comando sort di unix con LC_ALL=C sort -u file.txt è più rapido e lavora out-of-core. Il manuale di sort di GNU coreutils copre i flag che vale la pena conoscere.

Privacy e come funziona

Il tuo testo non lascia mai il browser. La divisione, il confronto e il join girano tutti in locale. Nessuna analitica sull'input, nessun log, nessun viaggio al server. Il confronto stesso è l'Intl.Collator nativo del browser, che implementa l'Unicode Collation Algorithm (UTS #10). Se vuoi una lettura di sfondo, Wikipedia ha una panoramica solida sugli algoritmi di ordinamento in generale.