Ordinatore di righe

Ordina, inverti, deduplica o mescola casualmente righe di testo.

Nessun dato lascia il tuo dispositivo
0 righe

Modalità di ordinamento

0 righe

Informazioni sull'ordinamento di righe

L'ordinamento di righe organizza il testo confrontando ogni riga secondo un ordine scelto. L'ordinamento alfabetico è utile per liste, glossari ed elenchi. L'ordinamento numerico tratta ogni riga come un numero e la classifica per valore. L'ordinamento per lunghezza raggruppa le voci corte e lunghe, pratico per la formattazione e il layout.

Questo strumento permette anche di rimuovere le righe duplicate, eliminare le righe vuote, pulire gli spazi, invertire l'ordine o mescolare casualmente le righe. Tutta l'elaborazione è istantanea e avviene nel tuo browser.

Usi comuni

Domande frequenti

Come funziona l'ordinamento numerico?

L'ordinamento numerico estrae il numero in testa a ogni riga e classifica per quel valore. Le righe che non iniziano con un numero sono posizionate alla fine. Questo significa che «9 articoli» passa prima di «10 articoli» (a differenza dell'ordinamento alfabetico, dove «10» precederebbe «9»).

Cosa fa «Rimuovi i duplicati»?

Questa opzione rimuove le righe che appaiono più di una volta, conservando solo la prima occorrenza. Combinata con «Insensibile al maiuscolo/minuscolo», anche le righe che differiscono solo per le maiuscole/minuscole sono trattate come duplicati.

Il mescolamento è davvero casuale?

Il mescolamento usa l'algoritmo di Fisher-Yates con Math.random(). È adatto a un uso comune come randomizzare liste o estrarre nomi a sorte. Non è crittograficamente sicuro · per casualità con esigenze di sicurezza, usa uno strumento dedicato.

Cos'è l'ordinamento di righe?

L'ordinamento di righe è l'operazione di riordinare le righe di un file di testo o lista secondo una regola scelta. La regola può essere lessicografica (confrontare i caratteri da sinistra a destra per il loro code point Unicode), numerica (estrarre un numero iniziale e confrontare i valori), basata sulla lunghezza (confrontare i conteggi dei caratteri) o casuale (uno shuffle Fisher-Yates che produce una permutazione uniformemente casuale). Ogni regola risponde a una domanda diversa sui tuoi dati.

Questo strumento espone otto modalità di ordinamento (A a Z, Z a A, numerico crescente, numerico decrescente, più corto prima, più lungo prima, shuffle, reverse) più quattro opzioni attivabili (case-insensitive, trim whitespace, rimuovi duplicati, rimuovi righe vuote). Le combinazioni coprono i flussi di lavoro quotidiani di pulizia delle liste che prima richiedevano un one-liner Bash con sort, uniq, awk e una pipeline shell. Ora incolli le righe, clicchi una modalità e qualche checkbox, e leggi il risultato.

Tutto il calcolo avviene nel tuo browser usando Array.prototype.sort integrato di JavaScript, che usa TimSort (un ibrido di merge sort e insertion sort, stabile e con caso peggiore O(n log n)) in V8, JavaScriptCore e SpiderMonkey dal 2018. Per liste sotto un milione di righe, l'operazione si completa più velocemente del tempo che ti serve per rilasciare il pulsante del mouse.

Cosa c'è dentro il sorter

L'interfaccia impila tre controlli: una textarea di input dove incolli le tue righe, una riga di otto pulsanti modalità che evidenziano la selezione attiva e una riga di quattro checkbox per le opzioni dedup-and-trim. Sotto di loro c'è il pulsante azione Sort Lines, che produce la textarea di output di sola lettura e aggiorna il contatore di righe sottostante.

I contatori di righe sopra e sotto l'input e l'output ti permettono di verificare l'operazione a colpo d'occhio: se hai iniziato con 1.234 righe e hai spuntato Remove Duplicates, il conteggio di output ti dice immediatamente quanti duplicati sono stati eliminati. Questa scorciatoia è più veloce che scrivere uno script Python o AWK una tantum per lo stesso compito.

Tre azioni avvolgono il fondo: Copy Result scrive l'output sulla tua clipboard tramite l'API Clipboard, Download .txt salva un file di testo UTF-8 con terminazioni di riga LF, e Clear svuota entrambe le textarea. Nessuna cronologia è mantenuta, nessuna impostazione persiste, e ricaricare la pagina riporta lo strumento al suo stato A-a-Z di default.

Storia e contesto

Smistatori di schede perforate Hollerith (1890)

Lo smistatore di schede perforate di Herman Hollerith, costruito per il censimento USA del 1890, faceva cadere meccanicamente ogni scheda in uno dei 12 contenitori in base alla posizione di un foro perforato. Gli operatori facevano passare le schede attraverso lo smistatore più volte, una per cifra, per produrre un ordinamento numerico completo. La tecnica era chiamata radix sort, e ha sostenuto l'informatica aziendale per i 60 anni successivi. IBM, fondata come Computing-Tabulating-Recording Company nel 1911, è cresciuta direttamente dalle macchine di Hollerith.

John von Neumann descrive il merge sort (1945)

In un rapporto interno del 1945 sull'EDVAC, John von Neumann descrisse il merge sort, il primo algoritmo scritto per un computer a programma memorizzato. L'idea è ricorsiva: dividi la lista in due, ordina ogni metà, poi unisci le due metà ordinate prendendo ripetutamente l'elemento frontale più piccolo. Il merge sort rimane un esempio da manuale di divide-and-conquer ed è la base di TimSort, l'algoritmo che V8 usa per Array.prototype.sort oggi.

Tony Hoare inventa il quicksort (1959)

Tony Hoare, allora un 25enne in visita all'Università Statale di Mosca per imparare il russo, progettò il quicksort nel 1959 mentre cercava di ordinare una lista di parole russe contro un dizionario inglese. L'algoritmo sceglie un pivot, partiziona la lista intorno ad esso e ricorre su ogni lato. Il caso medio è O(n log n), il caso peggiore O(n al quadrato), ma in pratica supera il merge sort grazie alla cache locality. Hoare vinse il Premio Turing nel 1980.

J.W.J. Williams introduce l'heapsort (1964)

J.W.J. Williams pubblicò l'heapsort in Communications of the ACM nel 1964. L'algoritmo costruisce un heap binario (un albero dove ogni genitore è almeno grande quanto i suoi figli) ed estrae ripetutamente la radice. Garantito O(n log n) sia nel caso medio che peggiore, nessuna memoria extra, ma cache-unfriendly. L'heapsort è il fallback del caso peggiore dentro lo std::sort di C++ (Introsort, 1997).

ASCII fissa l'ordine di ordinamento (dal 1963 al 1967)

ASCII, ratificato nel 1963 e rivisto nel 1967, assegnò i codici da 48 a 57 alle cifre da 0 a 9 e da 65 a 90 alle maiuscole da A a Z. La convenzione che 0 si ordina prima di 9 si ordina prima di A si ordina prima di Z (e che maiuscolo si ordina prima di minuscolo) è incorporata in ogni ordinamento lessicografico di default che il mondo ha prodotto da allora. Ecco perché Apple si ordina prima di apple e perché 10 si ordina prima di 9 quando confronti stringhe carattere per carattere.

Unicode Collation Algorithm (1996)

L'Unicode Consortium pubblicò il primo Unicode Collation Algorithm (UCA) nel 1996, codificato come UTS #10. UCA dà a ogni code point un peso multi-livello (primario, secondario, terziario) così che l'ordinamento può essere consapevole del locale: in tedesco, ä può ordinarsi con a o dopo z a seconda del contesto; in svedese, å si ordina dopo z; in spagnolo, ñ si ordina dopo n. Intl.Collator di JavaScript (2014) avvolge UCA ed è ciò che alimenta l'ordinamento delle liste corretto per locale sul web.

Flussi di lavoro pratici

Alfabetizzare una lista di nomi

Hai un elenco di classe, lista di partecipanti o dump di contatti incollato da una colonna di foglio di calcolo. Incolla, spunta Case insensitive (così alice e Alice si ordinano insieme), clicca A a Z. L'output è pronto per essere copiato nel foglio di calcolo o incollato nella riga BCC di un'email. Trim Whitespace cattura gli spazi vaganti che vengono dagli artefatti di copia-incolla.

Deduplicare le voci di log

Hai esportato 5.000 messaggi di errore da un log server e vuoi sapere quelli distinti. Incolla, spunta Remove duplicates, clicca A a Z. Il conteggio di output ti dice quanti errori unici esistono. Combina con Trim Whitespace se le righe di log hanno indentazione variabile.

Estrarre nomi per una lotteria o estrazione

Incolla i nomi dei concorrenti, uno per riga. Clicca Shuffle. La prima riga dell'output è il tuo vincitore, la seconda è il secondo classificato, e così via. L'implementazione Fisher-Yates usa Math.random, che è statisticamente uniforme ma non crittograficamente sicuro. Per estrazioni di premi con implicazioni legali, esegui lo shuffle su un server usando un CSPRNG.

Preparare una colonna CSV

Quando un file CSV ha SKU di prodotti non ordinati o ID cliente in una colonna, copia la colonna in un editor di testo, incolla qui, ordina numericamente e incolla indietro. La modalità numerica gestisce gli SKU come 9, 10, 100 correttamente (lessicografico li ordinerebbe 10, 100, 9, che raramente è quello che vuoi).

Confrontare due liste per elementi mancanti

Ordina entrambe le liste con le stesse opzioni (A a Z, Case insensitive, Trim Whitespace). Incollale fianco a fianco in uno strumento di diff. Gli elementi che appaiono in una lista ma non nell'altra diventano ovvi. Questo è più veloce che scansionare manualmente liste non ordinate e funziona anche quando entrambe le liste hanno migliaia di voci.

Ordinare un backlog o lista todo

Quando scrivi una lista todo in un editor di testo semplice e la vuoi indietro in ordine di priorità o alfabetico, incolla nel sorter. Usa Longest First per portare in alto compiti multi-step, o Shortest First per liberare le vittorie facili prima. Reverse Order è utile quando la lista originale era già ordinata ma nella direzione sbagliata.

Trappole comuni

Ordinamento lessicografico vs numerico

Gli ordinamenti A-a-Z di default confrontano stringhe carattere per carattere, quindi 10 viene prima di 9 perché 1 viene prima di 9 in ASCII. Per dati numerici, usa invece la modalità Numerica. Per dati alfanumerici misti come file2.txt vs file10.txt (natural sort), questo strumento non supporta direttamente il natural sort. Puoi fingerlo con zero-padding dei numeri prima dell'ordinamento.

La sensibilità al case è attiva per default

Per default l'ordinamento è case-sensitive: Apple si ordina prima di apple perché A maiuscola (65) viene prima di a minuscola (97) in ASCII. Se vuoi un ordinamento case-insensitive (alfabetico senza riguardo alla capitalizzazione), spunta la checkbox Case insensitive prima di cliccare Sort Lines.

Lo whitespace finale rompe il dedup

apple e apple (con spazio finale) sono stringhe diverse, quindi il dedup mantiene entrambi. Spunta sempre Trim Whitespace insieme a Remove Duplicates quando hai a che fare con dati incollati, altrimenti il conteggio dedup sarà gonfiato da ciò che sembra essere righe identiche.

L'ordinamento consapevole del locale non è supportato

Questo strumento usa l'ordinamento di default per code point Unicode, che è corretto per inglese e molte lingue europee ma non per tedesco (ä, ö, ü), svedese (å, ä, ö), spagnolo (ñ), o qualsiasi script con regole di collation. Per ordinamento corretto per locale, usa un foglio di calcolo o un linguaggio di programmazione con supporto Intl.Collator.

L'ordinamento stabile è garantito dal 2019

Array.prototype.sort è diventato stabile in tutti i principali browser a partire da Chrome 70 (2018) e Firefox 65 (2019). Prima di allora, elementi uguali potevano essere riordinati in modo imprevedibile, il che rompeva qualsiasi flusso di lavoro che dipendesse dall'ordine di inserimento. Questo strumento si basa sulla moderna garanzia di stabilità, quindi le righe uguali rimangono nel loro ordine relativo originale.

La normalizzazione Unicode influisce sull'uguaglianza

Il carattere é può essere codificato come un singolo code point (U+00E9) o come e più accento acuto combinante (U+0065 U+0301). Sembrano identici ma sono sequenze di byte diverse, quindi il dedup non li abbinerà. Se i tuoi dati mescolano entrambe le forme, normalizza con NFC prima in un linguaggio di programmazione, o aspettati che i duplicati sopravvivano al passaggio dedup.

Privacy e gestione dei dati

Ogni riga che incolli è ordinata nel tuo browser da una piccola funzione JavaScript. Nessun dato lascia il tuo dispositivo. Non registriamo gli input, non memorizziamo gli output, non eseguiamo analytics legati al contenuto del testo, né carichiamo SDK di terze parti che potrebbero leggere le textarea. I pulsanti Copy Result e Download .txt interagiscono con il tuo sistema operativo attraverso API standard di gesti utente (API Clipboard e il trucco ) e non sono visibili a parti esterne.

Una volta caricata la pagina, lo strumento funziona offline. Puoi disconnetterti dalla rete, aprire in una finestra privata, eseguire dentro una sandbox aziendale o usare la modalità aereo su un volo, e l'ordinamento si completerà comunque. Questo rende lo strumento sicuro per liste clienti riservate, SKU interni e qualsiasi dato che non dovrebbe mai toccare un server di terze parti.

Quando non usare un ordinatore di righe

Ordinare una colonna di foglio di calcolo con celle correlate

Se la colonna A contiene nomi e la colonna B contiene indirizzi email corrispondenti, copiare solo la colonna A qui e ordinare desincronizzerà la relazione delle righe. Usa l'ordinamento integrato del foglio di calcolo che muove intere righe insieme. L'ordinamento di righe è per testo standalone, indipendente dalle righe.

Dataset molto grandi (milioni di righe)

Lo strumento mantiene l'intero input e output in memoria e gira sincronicamente, il che può congelare la scheda browser su input di milioni di righe. Per dataset di quella dimensione, usa un sort da riga di comando (Unix sort, sort -u, sort -n) che gestisce file arbitrariamente grandi tramite merge sort esterno.

Dati streaming in tempo reale

Se nuove righe arrivano ogni secondo (come un feed di log live o uno stream websocket), questo strumento non può tenere il passo. È progettato per l'elaborazione batch di testo statico. Per ordinamento streaming usa un database con un indice ordinato o un linguaggio di programmazione con una coda di priorità.

Dati strutturati (JSON, CSV con quoting)

Array JSON, file CSV con virgole incorporate dentro campi quotati o elementi XML non sono sicuri da ordinare come testo semplice perché i loro delimitatori si estendono su più righe. Usa un sorter JSON-aware, un parser CSV o jq per l'ordinamento di dati strutturati.

Altre domande

Quale algoritmo di ordinamento usa lo strumento?

Lo strumento usa Array.prototype.sort integrato del browser, che è TimSort in V8 (Chrome, Edge, Node.js dal 2018) e un merge sort personalizzato in SpiderMonkey (Firefox). Entrambi sono stabili, O(n log n) caso peggiore e ottimizzati per dati del mondo reale parzialmente ordinati. Quasi certamente non puoi batterli con un'implementazione JavaScript personalizzata.

Posso ordinare per locale (tedesco, svedese, cinese)?

Non in questo strumento. Usiamo l'ordinamento di default per code point Unicode. Per ordinamento consapevole del locale (svedese å dopo z, tedesco ß come ss, spagnolo ñ dopo n), usa un foglio di calcolo con impostazioni locale, o Intl.Collator di JavaScript in uno script personalizzato. Lo strumento è destinato a flussi di lavoro inglese-di-default.

Quanto è casuale veramente l'opzione Shuffle?

Lo shuffle usa l'algoritmo Fisher-Yates (Knuth 3.4.2) con Math.random come fonte di entropia. Math.random nei browser moderni usa xorshift128+ (Chrome dal 2015), che è statisticamente uniforme e passa i test di casualità, ma non è crittograficamente sicuro. Per estrazioni di premi o qualsiasi cosa con peso legale, usa crypto.getRandomValues o un CSPRNG lato server.

C'è un numero massimo di righe?

Nessun limite rigido. Lo strumento gestisce comodamente 100.000 righe su un laptop di fascia media. A 1 milione di righe, aspettati una pausa di uno-tre secondi mentre il browser fa l'ordinamento. Sopra di quello, la textarea stessa diventa il collo di bottiglia, e lo strumento può brevemente bloccare la scheda. Usa uno strumento da riga di comando per dataset molto grandi.

Perché il mio ordinamento numerico mette 1.5 tra 1 e 2?

L'ordinamento numerico analizza il numero iniziale usando parseFloat, che riconosce punti decimali (1.5), notazione scientifica (1e3), negativi (-5) e unità finali ignorate dopo le cifre. Se il risultato non è un numero, la riga va alla fine. Questo comportamento corrisponde alla maggior parte delle aspettative degli utenti ma può sorprenderti con liste miste intere-e-decimali.

L'ordinamento modificherà il mio input originale?

No. La textarea di input è intatta. L'output ordinato appare in una textarea separata di sola lettura. Puoi ordinare lo stesso input più volte con modalità o opzioni diverse senza perdere l'originale. Il pulsante Clear è l'unico modo per cancellare l'input, e non chiede conferma, quindi usalo deliberatamente.

Strumenti correlati