Questa risposta è ispirata a un video di YouTube . Aggiornato per mantenere l'ordinamento originale, se questo è importante.
Notepad ++ ha uno strumento TextFX incorporato che ordina le linee selezionate in ordine alfabetico. Questo strumento può essere dirottato per ordinare in base alla lunghezza delle linee posizionando gli spazi a sinistra di ogni linea e assicurandosi che tutte le linee abbiano la stessa lunghezza.
"Lo zoo" viene in ordine alfabetico prima di "La loro casa" perché lo spazio viene trattato come un personaggio e viene prima di "i". __X
(fingendo che i caratteri di sottolineatura siano in realtà degli spazi) verrà similmente in ordine alfabetico prima _XX
. L'idea in questa risposta è quella di aggiungere spazi e numeri di riga in modo che __________092dog
vengano ordinati sopra _003alligator
.
Userò i seguenti dati di esempio:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Passaggio 1. Aggiungi numeri di riga.
(Nota aggiunta da barlop: una nota per il lettore relativa a questo passaggio, non ordineremo in base a questi numeri di riga, stiamo ordinando in base alla lunghezza delle righe. Ma la ragione per aggiungere i numeri di riga, è quindi conoscere l'ordine naturale, in modo che quando ad esempio due + linee abbiano la stessa lunghezza possiamo ordinare quelle linee in base a quell'ordine naturale)
Supponendo che il file di testo contenga solo i dati, posizionare il cursore di testo (la linea verticale) nella prima posizione del file. Quindi nel Edit
menu selezionare Column Editor...
( Alt+ C). Scegli "Numero da inserire" e inizia con 1, aumenta di 1 e includi gli zeri iniziali. Si noti che ciò manterrà l'ordinamento originale durante l'ordinamento dalla stringa più corta alla stringa più lunga. Invertire prima tutte le linee se si desidera ordinare dal più lungo al più corto.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Passaggio 2. Riempi tutte le linee con spazi iniziali.
Posiziona il cursore di testo (la linea verticale) nella prima posizione del file. Quindi nel Edit
menu selezionare Column Editor...
( Alt+ C). Inserire spazi sufficienti in modo che la linea di dati più corta venga riempita per la lunghezza della linea di dati più lunga. Se la tua linea più corta ha 4 caratteri e la più lunga 44, assicurati di inserire almeno 40 spazi.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Passaggio 3. Tagliare le linee a una lunghezza uniforme.
Utilizzare la seguente ricerca / sostituzione di espressioni regolari ( Ctrl+ H) per far corrispondere i caratteri della mano destra uguali o superiori alla lunghezza della linea di dati più lunga.
^.*(.{50})$
Sostituisci tutto con $1
. Ciò eliminerà tutto tranne i 50 caratteri più a destra di ogni riga. Se i tuoi dati sono più lunghi (o brevi) di 50, modifica l' {50}
espressione regolare.
(Nota aggiunta da barlop: l'idea qui è che le linee più brevi hanno più spazi all'inizio )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Passaggio 4. Ordinare le linee.
Seleziona tutto il testo ( Ctrl+ A). Tramite il menu TextFX, vai a Text FX > TextFX Tools > Sort lines case sensitive (at column)
. I dati ora dovrebbero essere in ordine di lunghezza, dal più breve al più lungo. Se li desideri in ordine dal più lungo al più corto, deseleziona l' Text FX > TextFX Tools > + Sort ascending
opzione prima di ordinare. Nota come anche i numeri di riga vengono invertiti.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Passaggio 5. Rimuovere gli spazi iniziali.
Usa un'altra espressione regolare Trova / Sostituisci ( Ctrl+ H) per abbinare gli spazi iniziali.
^ *\d{4}
Questo è uno spazio tra il cursore e l'asterisco. Sostituisci tutto con niente. Ciò rimuoverà tutti gli spazi iniziali e i numeri di riga inseriti, se avessi numeri di riga di 4 cifre. Sostituisci {4}
con il numero corretto di cifre nei numeri di riga.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
Ho registrato i passaggi precedenti usando la funzione macro di Notepad ++ e non funziona. Non sono sicuro di quale passo fallisca, ma non ho diagnosticato il perché. Probabilmente potresti usare AutoHotKey per automatizzare questo se lo fai ripetutamente.