¿Cómo puedo ordenar un archivo de texto por longitud de línea en notepad ++? ¿Hay algún complemento disponible para la tarea mencionada?
En caso de que no haya un complemento, ¿Cuál es el primer y quizás el segundo tutorial para leer? ¿Para escribir el complemento Yo mismo?
13
Respuestas:
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:
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ú, seleccioneColumn 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.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ú, seleccioneColumn 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.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.
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 )
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 laText FX > TextFX Tools > + Sort ascending
opción antes de ordenar. Observe cómo también se invierten los números de línea.Paso 5. Eliminar los espacios iniciales.
Use otra expresión regular Buscar / reemplazar ( Ctrl+ H) para hacer coincidir los espacios iniciales.
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.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.
fuente
^ *\d{5}
o la cantidad de dígitos que se usó para los números de línea.No, no creo que haya. El más cercano es el complemento TextFx, pero es una clasificación basada en caracteres, no basada en la longitud de la línea. Su mejor opción es tirar el texto en una hoja de cálculo y ordenarlo allí (usando una columna computada separada usando la
LEN()
función).fuente
¡Puedes usar SQL en N ++ en archivos CSV! Por ejemplo si tienes:
, puede ejecutar el comando
select * from data order by length(col1) desc
para ordenar descendente. "datos" significa el archivo actual. "col1": nombre de la primera (y última) columna.Desafortunadamente, es probable que haya un error que no permita el delimitador de abandono después de las líneas en el texto de una columna.
fuente
O si tienes linux y nedit:
fuente