Esta respuesta está inspirada en un video de YouTube . Actualizado para mantener el orden de clasificación original, si eso es importante.
Notepad ++ tiene una herramienta incorporada de TextFX que ordena las líneas seleccionadas alfabéticamente. Esta herramienta se puede secuestrar para ordenar por la longitud de las líneas colocando espacios a la izquierda de cada línea y asegurándose de que todas las líneas tengan la misma longitud.
"El zoológico" aparece alfabéticamente antes de "Su casa" porque el espacio se trata como un personaje y aparece antes de "i". __X
(simulando que los guiones bajos son realmente espacios) también aparecerán alfabéticamente antes _XX
. La idea en esta respuesta es agregar espacios y números de línea para que __________092dog
se ordenen arriba_003alligator
.
Usaré lo siguiente como datos de ejemplo:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Paso 1. Agregar números de línea.
(Nota agregada por barlop: una nota para el lector con respecto a este paso, no estaremos ordenando de acuerdo con estos números de línea, estamos ordenando de acuerdo con la longitud de las líneas. Pero la razón para agregar los números de línea es que conocer el orden natural, de modo que cuando, por ejemplo, dos líneas + tienen la misma longitud, podemos clasificar esas líneas de acuerdo con ese orden natural)
Suponiendo que su archivo de texto solo contenga los datos, coloque el cursor de texto (la línea vertical) en la primera posición del archivo. Luego, en el Edit
menú, seleccione Column Editor...
( Alt+ C). Elija "Número para insertar" y comience con 1, aumente en 1 e incluya ceros a la izquierda. Tenga en cuenta que esto retendrá el orden original al ordenar de la cadena más corta a la más larga. Invierta todas las líneas primero si desea ordenar de mayor a menor.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Paso 2. Rellene todas las líneas con espacios iniciales.
Coloque el cursor de texto (la línea vertical) en la primera posición del archivo. Luego, en el Edit
menú, seleccione Column Editor...
( Alt+ C). Inserte suficientes espacios para que la línea de datos más corta se rellene hasta la longitud de la línea de datos más larga. Si su línea más corta tiene 4 caracteres y la más larga tiene 44, asegúrese de insertar al menos 40 espacios.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Paso 3. Recorte las líneas a una longitud uniforme.
Use el siguiente Buscar / Reemplazar expresión regular ( Ctrl+ H) para hacer coincidir los caracteres de la derecha que igualen o excedan la longitud de su línea de datos más larga.
^.*(.{50})$
Reemplace todo con $1
. Eso recortará todo excepto los 50 caracteres más a la derecha de cada línea. Si sus datos son más largos (o cortos) que 50, ajuste la {50}
expresión regular.
(Nota agregada por barlop: la idea aquí es que las líneas más cortas tienen más espacios al principio )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Paso 4. Ordena las líneas.
Seleccione todo el texto ( Ctrl+ A). A través del menú TextFX, vaya a Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Sus datos ahora deben estar en orden de longitud, de menor a mayor. Si los quiere en orden del más largo al más corto, desmarque la Text FX > TextFX Tools > + Sort ascending
opción antes de ordenar. Observe cómo también se invierten los números de línea.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Paso 5. Eliminar los espacios iniciales.
Use otra expresión regular Buscar / reemplazar ( Ctrl+ H) para hacer coincidir los espacios iniciales.
^ *\d{4}
Ese es un espacio entre el cursor y el asterisco. Reemplace todo con nada. Eso eliminará todos los espacios iniciales y los números de línea insertados, si tenía números de línea de 4 dígitos. Reemplace el {4}
con el número correcto de dígitos en sus números de línea.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
Grabé los pasos anteriores con la función macro de Notepad ++, y no funciona. No estoy seguro de qué paso falla, pero no he diagnosticado por qué. Probablemente podría usar AutoHotKey para automatizar esto si lo hace repetidamente.