Como posso classificar um arquivo de texto pelo comprimento da linha no bloco de notas ++? Existe algum plugin disponível para a tarefa mencionada?
Caso não exista um plug-in, qual é o primeiro e talvez o segundo tutorial a serem lidos, Para escrever o próprio plugin?
13
Respostas:
Esta resposta é inspirada em 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 invadida para classificar pelo comprimento das linhas, colocando espaços à esquerda de cada linha e certificando-se de que todas as linhas tenham o mesmo comprimento.
"The Zoo" vem em ordem alfabética antes de "Their House" porque o espaço é tratado como um personagem e vem antes de "i".
__X
(fingir que os sublinhados são realmente espaços) também virá alfabeticamente antes_XX
. A idéia nesta resposta é adicionar espaços e números de linha para que__________092dog
sejam classificados acima_003alligator
.Usarei o seguinte como exemplo de dados:
Etapa 1. Adicione números de linha.
(Observação adicionada por barlop - uma observação para o leitor sobre esta etapa, não classificaremos de acordo com esses números de linha, classificamos de acordo com o comprimento das linhas. Mas a razão para adicionar os números de linha é que conhecer a ordem natural, de modo que quando, por exemplo, duas + linhas tiverem o mesmo comprimento, poderemos classificá-las 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
Edit
menu, selecioneColumn Editor...
( Alt+ C). Escolha "Número a inserir" e comece com 1, aumente 1 e inclua zeros à esquerda. Observe que isso manterá a ordem original ao classificar da sequência mais curta para a mais longa. Inverta todas as linhas primeiro se desejar classificar do maior para o menor.Etapa 2. Preencha todas as linhas com espaços à esquerda.
Coloque o cursor do texto (a linha vertical) na primeira posição do arquivo. Em seguida, no
Edit
menu, selecioneColumn Editor...
( Alt+ C). Insira espaços suficientes para que a menor linha de dados seja preenchida com o comprimento da maior linha de dados. Se sua linha mais curta tiver 4 caracteres e a mais longa 44, insira pelo menos 40 espaços.Etapa 3. Corte as linhas em um comprimento uniforme.
Use a seguinte Localização / Substituição de Expressão Regular ( Ctrl+ H) para corresponder aos caracteres do lado direito iguais ou superiores ao comprimento da sua linha de dados mais longa.
Substitua tudo por
$1
. Isso irá aparar tudo, exceto os 50 caracteres mais à direita de cada linha. Se seus dados forem maiores (ou curtos) que 50, ajuste-os{50}
na Expressão regular.(Nota adicionada por barlop - a ideia aqui é que as linhas mais curtas tenham mais espaços no início )
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 agora devem estar em ordem de comprimento, do menor para o maior. Se você deseja que eles sejam ordenados do maior para o menor, desmarque aText FX > TextFX Tools > + Sort ascending
opção antes de classificar. Observe como os números das linhas também são revertidos.Etapa 5. Remova os espaços à esquerda.
Use outra Localização / Substituição de Expressão Regular ( Ctrl+ H) para corresponder aos espaços à esquerda.
Esse é um espaço entre o sinal de intercalação e o asterisco. Substitua tudo por nada. Isso removerá todos os espaços à esquerda e os números de linha inseridos, se você tiver números de linha de 4 dígitos. Substitua
{4}
por o número correto de dígitos nos números de linha.MACRO
Gravei as etapas acima usando o recurso de macro do Notepad ++ e ele não funciona. Não tenho certeza de qual etapa falhará, mas ainda não diagnosticei o porquê. Você provavelmente poderia usar o AutoHotKey para automatizar isso se fizer isso repetidamente.
fonte
^ *\d{5}
ou o número de dígitos usado para os números de linha.Não, acho que não existe. O mais próximo é o plugin TextFx, mas é uma classificação baseada em caracteres e não no comprimento da linha. Sua melhor aposta é lançar o texto em uma planilha e classificá-lo lá (usando uma coluna computada separada usando o
LEN()
função).fonte
Você pode usar SQL em N ++ em arquivos CSV! Por exemplo, se você tiver:
, você pode executar o comando
select * from data order by length(col1) desc
para classificar decrescente. "dados" significa arquivo atual. "col1" - nome da primeira (e última) coluna.Infelizmente, provavelmente existe um erro que não permite o delimitador de abandono após as linhas no texto de uma coluna.
fonte
Ou se você tiver linux e nedit:
fonte