Esta resposta é inspirada por um vídeo do YouTube . Atualizado para manter a ordem de classificação original, se isso for importante.
O Notepad ++ possui uma ferramenta TextFX interna que classifica as linhas selecionadas em ordem alfabética. Essa ferramenta pode ser sequestrada para classificar pelo comprimento das linhas, colocando espaços à esquerda de cada linha e certificando-se de que todas as linhas tenham o mesmo tamanho.
"O Zoo" vem em ordem alfabética antes de "Sua Casa" porque o espaço é tratado como um caractere e vem antes de "i". __X
(fingindo que os sublinhados são realmente espaços) será semelhante em ordem alfabética antes de _XX
. A ideia nesta resposta é adicionar espaços e números de linha para que __________092dog
seja classificado acima de _003alligator
.
Vou usar o seguinte como dados de exemplo:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Etapa 1. Adicione números de linha.
(Nota adicionada por barlop - uma nota para o leitor sobre essa etapa, não estaremos classificando de acordo com esses números de linha, estamos classificando de acordo com o comprimento das linhas. Mas a razão para adicionar a linha números de linha, é assim que sabemos a ordem natural, de modo que quando, por exemplo, duas linhas + são de igual comprimento, podemos classificar essas linhas de acordo com essa ordem natural)
Supondo que seu arquivo de texto tenha apenas os dados, coloque o cursor de texto (a linha vertical) na primeira posição do arquivo. Em seguida, no menu Edit
, selecione Column Editor...
( Alt + C ). Escolha "Número para inserir", comece com 1, aumente em 1 e inclua zeros à esquerda. Observe que isso manterá a ordem original ao classificar da cadeia mais curta para a mais longa. Inverta todas as linhas primeiro se você quiser classificá-las da mais longa para a mais curta.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Etapa 2. Preencher todas as linhas com espaços iniciais.
Coloque o cursor de texto (a linha vertical) na primeira posição do arquivo. Em seguida, no menu Edit
, selecione Column Editor...
( Alt + C ). Insira espaços suficientes para que a linha mais curta de dados seja preenchida com o comprimento da maior linha de dados. Se a sua linha mais curta tiver 4 caracteres e a sua 44 mais longa, insira pelo menos 40 espaços.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Etapa 3. Apare as linhas para um comprimento uniforme.
Use a seguinte Expressão / Substituição de Expressões Regulares ( Ctrl + H ) para combinar com os caracteres à direita, igualando ou excedendo o comprimento de sua linha de dados mais longa. p>
^.*(.{50})$
Substitua tudo por $1
. Isso cortará tudo, exceto os 50 caracteres mais à direita de cada linha. Se os seus dados forem mais longos (ou curtos) do que 50, ajuste o {50}
na expressão regular.
(Nota adicionada por barlop- a ideia aqui é que as linhas mais curtas têm o maior número de espaços no início )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Etapa 4. Classifique as linhas.
Selecione todo o texto ( Ctrl + A ). Através do menu TextFX, vá para Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Seus dados devem estar em ordem de duração, do mais curto para o mais longo. Se você os quiser na ordem de mais longa para a mais curta, desmarque a opção Text FX > TextFX Tools > + Sort ascending
antes de classificar. Observe como os números de linha também são invertidos.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Etapa 5. Remova os espaços iniciais.
Use outro Localizar / Substituir Expressão Regular ( Ctrl + H ) para corresponder aos espaços iniciais.
^ *\d{4}
Esse é um espaço entre o cursor e o asterisco. Substitua tudo por nada. Isso removerá todos os espaços iniciais e os números de linha inseridos, se você tivesse números de linha de 4 dígitos. Substitua o {4}
pelo número correto de dígitos nos seus números de linha.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
Eu gravei as etapas acima usando o recurso macro do Notepad ++ e ele não funciona. Não tenho certeza qual etapa falha, mas não diagnostiquei o motivo. Você provavelmente poderia usar o AutoHotKey para automatizar isso se fizer isso repetidamente.