Ordenador de linhas
Ordene, inverta, deduplique ou embaralhe linhas de texto.
Modo de ordenação
Sobre a ordenação de linhas
A ordenação de linhas organiza o texto comparando cada linha segundo uma ordem escolhida. A ordenação alfabética é útil para listas, glossários e diretórios. A ordenação numérica trata cada linha como um número e a classifica por valor. A ordenação por comprimento agrupa entradas curtas e longas, prática para formatação e layout.
Esta ferramenta também permite remover linhas duplicadas, tirar linhas vazias, limpar espaços, inverter a ordem ou embaralhar as linhas aleatoriamente. Todo o processamento é instantâneo e ocorre no seu navegador.
Usos comuns
- Ordenar alfabeticamente uma lista de nomes, artigos ou entradas
- Ordenar valores de colunas CSV ou entradas de logs
- Remover duplicatas de um arquivo ou conjunto de dados
- Sortear uma lista para loterias ou atribuição aleatória em jogos
- Ordenar números do menor para o maior, ou o inverso
- Limpar dados removendo espaços e linhas vazias
Perguntas frequentes
Como funciona a ordenação numérica ?
A ordenação numérica extrai o número no início de cada linha e classifica por esse valor. As linhas que não começam por um número são colocadas no fim. Isso significa que « 9 itens » vem antes de « 10 itens » (diferente da ordenação alfabética, onde « 10 » precederia « 9 »).
O que faz « Remover duplicatas » ?
Esta opção remove as linhas que aparecem mais de uma vez, mantendo apenas a primeira ocorrência. Combinada com « Insensível à caixa », as linhas que diferem apenas pela caixa também são tratadas como duplicatas.
O embaralhamento é realmente aleatório ?
O embaralhamento usa o algoritmo de Fisher-Yates com Math.random(). É adequado para uso cotidiano, como randomizar listas ou sortear nomes. Não é criptograficamente seguro · para aleatoriedade com implicações de segurança, use uma ferramenta dedicada.
O que é ordenação de linhas?
A ordenação de linhas é a operação de reordenar as linhas de um arquivo de texto ou lista de acordo com uma regra escolhida. A regra pode ser lexicográfica (comparar caracteres da esquerda para a direita pelo seu ponto de código Unicode), numérica (extrair um número inicial e comparar valores), baseada em comprimento (comparar contagens de caracteres) ou aleatória (um embaralhamento Fisher-Yates que produz uma permutação uniformemente aleatória). Cada regra responde uma pergunta diferente sobre seus dados.
Esta ferramenta expõe oito modos de ordenação (A a Z, Z a A, numérico ascendente, numérico descendente, mais curto primeiro, mais longo primeiro, embaralhar, inverter) mais quatro opções alternáveis (insensível a maiúsculas, aparar espaços, remover duplicados, remover linhas vazias). As combinações cobrem os fluxos de trabalho diários de limpeza de listas que costumavam exigir um one-liner Bash com sort, uniq, awk e um pipeline shell. Agora você cola as linhas, clica em um modo e algumas caixas de seleção, e lê o resultado.
Toda a computação acontece no seu navegador usando o Array.prototype.sort embutido do JavaScript, que usa TimSort (um híbrido de merge sort e insertion sort, estável e O(n log n) no pior caso) no V8, JavaScriptCore e SpiderMonkey desde 2018. Para listas com menos de um milhão de linhas, a operação se completa mais rápido do que o tempo que você leva para soltar o botão do mouse.
O que há dentro do ordenador
A interface empilha três controles: uma área de texto de entrada onde você cola suas linhas, uma linha de oito botões de modo que destacam a seleção ativa, e uma linha de quatro caixas de seleção para as opções de deduplicação e aparagem. Abaixo delas está o botão de ação Ordenar Linhas, que produz a área de texto de saída somente leitura e atualiza o contador de linhas abaixo.
Os contadores de linhas acima e abaixo da entrada e saída permitem que você verifique a operação rapidamente: se começou com 1.234 linhas e marcou Remover Duplicados, a contagem de saída lhe diz imediatamente quantos duplicados foram removidos. Este atalho é mais rápido que escrever um script Python ou AWK pontual para a mesma tarefa.
Três ações envolvem o fundo: Copiar Resultado escreve a saída para sua área de transferência via Clipboard API, Baixar .txt salva um arquivo de texto UTF-8 com terminadores de linha LF, e Limpar esvazia ambas as áreas de texto. Nenhum histórico é mantido, nenhuma configuração persiste, e atualizar a página retorna a ferramenta ao seu estado padrão A-a-Z.
História e contexto
Classificadores de cartões perfurados Hollerith (1890)
O classificador de cartões perfurados de Herman Hollerith, construído para o Censo dos EUA de 1890, deixava cair mecanicamente cada cartão em um dos 12 compartimentos com base na posição de um furo perfurado. Operadores passavam os cartões pelo classificador várias vezes, uma vez por dígito, para produzir uma ordenação numérica completa. A técnica era chamada radix sort, e sustentou a computação empresarial pelos próximos 60 anos. A IBM, fundada como Computing-Tabulating-Recording Company em 1911, cresceu diretamente das máquinas de Hollerith.
John von Neumann descreve merge sort (1945)
Em um relatório interno de 1945 sobre o EDVAC, John von Neumann descreveu o merge sort, o primeiro algoritmo escrito para um computador com programa armazenado. A ideia é recursiva: divida a lista em duas, ordene cada metade, depois mescle as duas metades ordenadas tomando repetidamente o elemento frontal menor. Merge sort permanece um exemplo de livro didático de divisão-e-conquista e é a base do TimSort, o algoritmo que o V8 usa para Array.prototype.sort hoje.
Tony Hoare inventa o quicksort (1959)
Tony Hoare, então com 25 anos visitando a Universidade Estatal de Moscou para aprender russo, projetou o quicksort em 1959 enquanto tentava ordenar uma lista de palavras russas contra um dicionário inglês. O algoritmo escolhe um pivô, particiona a lista ao seu redor e recursa em cada lado. Caso médio é O(n log n), pior caso O(n quadrado), mas na prática supera o merge sort devido à localidade de cache. Hoare ganhou o Prêmio Turing em 1980.
J.W.J. Williams introduz heapsort (1964)
J.W.J. Williams publicou o heapsort em Communications of the ACM em 1964. O algoritmo constrói um heap binário (uma árvore onde cada pai é pelo menos tão grande quanto seus filhos) e extrai repetidamente a raiz. Garantido O(n log n) tanto no caso médio quanto no pior, sem memória extra, mas hostil ao cache. Heapsort é o fallback do pior caso dentro do std::sort do C++ (Introsort, 1997).
ASCII fixa a ordem de classificação (1963 a 1967)
ASCII, ratificado em 1963 e revisado em 1967, atribuiu códigos 48 a 57 aos dígitos 0 a 9 e 65 a 90 às maiúsculas A a Z. A convenção de que 0 classifica antes de 9 classifica antes de A classifica antes de Z (e que maiúsculas classificam antes de minúsculas) está embutida em cada classificação lexicográfica padrão que o mundo produziu desde então. É por isso que 'Apple' classifica antes de 'apple' e por que '10' classifica antes de '9' quando você compara strings caractere por caractere.
Algoritmo de Colação Unicode (1996)
O Consórcio Unicode publicou o primeiro Algoritmo de Colação Unicode (UCA) em 1996, codificado como UTS #10. UCA dá a cada ponto de código um peso multinível (primário, secundário, terciário) para que a classificação possa ser consciente do idioma: em alemão, ä pode classificar com a ou após z dependendo do contexto; em sueco, å classifica após z; em espanhol, ñ classifica após n. O Intl.Collator do JavaScript (2014) envolve o UCA e é o que alimenta a classificação correta de listas por idioma na web.
Fluxos de trabalho práticos
Ordenar alfabeticamente uma lista de nomes
Você tem uma lista de turma, lista de participantes ou despejo de contatos colado de uma coluna de planilha. Cole, marque Insensível a maiúsculas (para que 'alice' e 'Alice' classifiquem juntos), clique em A a Z. A saída está pronta para copiar de volta para a planilha ou colar na linha BCC de um e-mail. Aparar Espaços captura os espaços perdidos que vêm de artefatos de copiar e colar.
Deduplicar entradas de log
Você exportou 5.000 mensagens de erro de um log de servidor e quer saber as distintas. Cole, marque Remover duplicados, clique em A a Z. A contagem de saída lhe diz quantos erros únicos existem. Combine com Aparar Espaços se as linhas de log têm recuo variável.
Sortear nomes para uma loteria ou rifa
Cole os nomes dos concorrentes, um por linha. Clique em Embaralhar. A primeira linha da saída é seu vencedor, a segunda é o vice-campeão, e assim por diante. A implementação Fisher-Yates usa Math.random, que é estatisticamente uniforme mas não criptograficamente seguro. Para sorteios de prêmios com implicações legais, execute o embaralhamento em um servidor usando um CSPRNG.
Preparar uma coluna CSV
Quando um arquivo CSV tem SKUs de produto ou IDs de cliente não ordenados em uma coluna, copie a coluna para um editor de texto, cole aqui, ordene numericamente e cole de volta. O modo numérico lida corretamente com SKUs como '9', '10', '100' (o lexicográfico os ordenaria 10, 100, 9, o que raramente é o que você quer).
Comparar duas listas para itens faltantes
Ordene ambas as listas com as mesmas opções (A a Z, Insensível a maiúsculas, Aparar Espaços). Cole-as lado a lado em uma ferramenta de diff. Itens que aparecem em uma lista mas não na outra se tornam óbvios. Isso é mais rápido que escanear manualmente listas não ordenadas e funciona mesmo quando ambas as listas têm milhares de entradas.
Ordenar um backlog ou lista de tarefas
Quando você escreve uma lista de tarefas em um editor de texto puro e quer de volta em ordem de prioridade ou alfabética, cole no ordenador. Use Mais Longo Primeiro para trazer à tona tarefas de múltiplos passos no topo, ou Mais Curto Primeiro para limpar primeiro as vitórias fáceis. Inverter Ordem é útil quando a lista original já estava ordenada mas na direção errada.
Armadilhas comuns
Ordenação lexicográfica vs numérica
Ordenações A-a-Z padrão comparam strings caractere por caractere, então '10' vem antes de '9' porque '1' vem antes de '9' em ASCII. Para dados numéricos, use o modo Numérico em vez disso. Para dados alfanuméricos mistos como 'arquivo2.txt' vs 'arquivo10.txt' (ordenação natural), esta ferramenta não suporta ordenação natural diretamente. Você pode falsificá-la preenchendo com zeros os números antes de ordenar.
Sensibilidade a maiúsculas está ativada por padrão
Por padrão a ordenação é sensível a maiúsculas: 'Apple' ordena antes de 'apple' porque A maiúsculo (65) vem antes de a minúsculo (97) em ASCII. Se você quer ordenação insensível a maiúsculas (alfabética sem considerar capitalização), marque a caixa Insensível a maiúsculas antes de clicar em Ordenar Linhas.
Espaços em branco no final quebram a deduplicação
'apple' e 'apple ' (com espaço no final) são strings diferentes, então a deduplicação mantém ambas. Sempre marque Aparar Espaços junto com Remover Duplicados ao lidar com dados colados, caso contrário a contagem de deduplicação será inflada pelo que parecem ser linhas idênticas.
Ordenação consciente da localização não é suportada
Esta ferramenta usa a ordem de ponto de código Unicode padrão, que está correta para inglês e muitas línguas europeias mas não para alemão (ä, ö, ü), sueco (å, ä, ö), espanhol (ñ) ou qualquer escrita com regras de colação. Para ordenação correta por localização, use uma planilha ou uma linguagem de programação com suporte Intl.Collator.
Ordenação estável é garantida desde 2019
Array.prototype.sort se tornou estável em todos os principais navegadores a partir do Chrome 70 (2018) e Firefox 65 (2019). Antes disso, elementos iguais podiam ser reordenados imprevisivelmente, o que quebrava qualquer fluxo de trabalho que dependesse da ordem de inserção. Esta ferramenta depende da garantia estável moderna, então linhas iguais permanecem em sua ordem relativa original.
Normalização Unicode afeta a igualdade
O caractere é pode ser codificado como um único ponto de código (U+00E9) ou como e mais acento agudo combinante (U+0065 U+0301). Eles parecem idênticos mas são sequências de bytes diferentes, então a deduplicação não os fará corresponder. Se seus dados misturam ambas as formas, normalize com NFC em uma linguagem de programação primeiro, ou espere que duplicados sobrevivam à passagem de deduplicação.
Privacidade e tratamento de dados
Cada linha que você cola é ordenada no seu navegador por uma pequena função JavaScript. Nenhum dado sai do seu dispositivo. Não registramos entradas, não armazenamos saídas, não executamos análises vinculadas ao conteúdo do texto, nem carregamos SDKs de terceiros que poderiam ler as áreas de texto. Os botões Copiar Resultado e Baixar .txt interagem com seu sistema operacional através de APIs padrão de gesto do usuário (Clipboard API e o truque <a download>) e não são visíveis para partes externas.
Uma vez carregada a página, a ferramenta funciona offline. Você pode desconectar da rede, abrir em uma janela privada, executar dentro de um sandbox corporativo ou usar modo avião em um voo, e a ordenação ainda se completará. Isso torna a ferramenta segura para listas confidenciais de clientes, SKUs internos e quaisquer dados que nunca deveriam tocar um servidor de terceiros.
Quando não usar um ordenador de linhas
Ordenar uma coluna de planilha com células relacionadas
Se a coluna A contém nomes e a coluna B contém endereços de e-mail correspondentes, copiar apenas a coluna A aqui e ordenar dessincronizará a relação de linha. Use a ordenação embutida da planilha que move linhas inteiras juntas. A ordenação de linhas é para texto autônomo, independente de linha.
Conjuntos de dados muito grandes (milhões de linhas)
A ferramenta mantém toda a entrada e saída em memória e executa sincronamente, o que pode congelar a aba do navegador em entradas de múltiplos milhões de linhas. Para conjuntos de dados desse tamanho, use uma ordenação de linha de comando (sort do Unix, sort -u, sort -n) que lida com arquivos arbitrariamente grandes via merge sort externo.
Dados de streaming em tempo real
Se novas linhas chegam a cada segundo (como um feed de log ao vivo ou um stream websocket), esta ferramenta não consegue acompanhar. Ela é projetada para processamento em lote de texto estático. Para ordenação de streaming use um banco de dados com um índice ordenado, ou uma linguagem de programação com uma fila de prioridade.
Dados estruturados (JSON, CSV com aspas)
Arrays JSON, arquivos CSV com vírgulas embutidas dentro de campos entre aspas, ou elementos XML não são seguros para ordenar como texto puro porque seus delimitadores se estendem por múltiplas linhas. Use um ordenador consciente de JSON, um parser CSV ou jq para ordenação de dados estruturados.
Mais perguntas
Qual algoritmo de ordenação a ferramenta usa?
A ferramenta usa o Array.prototype.sort embutido do navegador, que é TimSort no V8 (Chrome, Edge, Node.js desde 2018) e um merge sort personalizado no SpiderMonkey (Firefox). Ambos são estáveis, O(n log n) no pior caso e otimizados para dados do mundo real parcialmente ordenados. Você quase certamente não pode superá-los com uma implementação JavaScript personalizada.
Posso ordenar por localização (alemão, sueco, chinês)?
Não nesta ferramenta. Usamos a ordem de ponto de código Unicode padrão. Para ordenação consciente da localização (å sueco após z, ß alemão como ss, ñ espanhol após n), use uma planilha com configurações de localização, ou Intl.Collator do JavaScript em um script personalizado. A ferramenta é destinada a fluxos de trabalho padrão em inglês.
Quão aleatória é realmente a opção Embaralhar?
O embaralhamento usa o algoritmo Fisher-Yates (Knuth 3.4.2) com Math.random como fonte de entropia. Math.random em navegadores modernos usa xorshift128+ (Chrome desde 2015), que é estatisticamente uniforme e passa em testes de aleatoriedade, mas não é criptograficamente seguro. Para sorteios de prêmios ou qualquer coisa com peso legal, use crypto.getRandomValues ou um CSPRNG do lado do servidor.
Há um número máximo de linhas?
Sem limite rígido. A ferramenta lida confortavelmente com 100.000 linhas em um laptop de gama média. Com 1 milhão de linhas, espere uma pausa de um a três segundos enquanto o navegador faz a ordenação. Acima disso, a própria área de texto se torna o gargalo, e a ferramenta pode brevemente travar a aba. Use uma ferramenta de linha de comando para conjuntos de dados muito grandes.
Por que minha ordenação numérica coloca '1.5' entre '1' e '2'?
A ordenação numérica analisa o número inicial usando parseFloat, que reconhece pontos decimais (1.5), notação científica (1e3), negativos (-5) e unidades finais ignoradas após os dígitos. Se o resultado não é um número, a linha vai para o final. Este comportamento corresponde à maioria das expectativas dos usuários mas pode surpreendê-lo com listas mistas de inteiros e decimais.
A ordenação modificará minha entrada original?
Não. A área de texto de entrada permanece intacta. A saída ordenada aparece em uma área de texto separada somente leitura. Você pode ordenar a mesma entrada várias vezes com modos ou opções diferentes sem perder o original. O botão Limpar é a única maneira de apagar a entrada, e não pede confirmação, então use-o deliberadamente.