Ferramenta de deduplicação de texto
Remova rapidamente conteúdo duplicado do texto, suporta deduplicação por linha, palavra e frase
Conteúdo duplicado(0)
O que é deduplicação de texto?
Text Deduplicate remove linhas, palavras ou entradas repetidas de um texto para tornar listas mais limpas e fáceis de revisar. Ele é útil para trechos CSV importados, listas de palavras-chave, coleções de e-mails, fragmentos de log, códigos de produto, variantes de prompts e notas em que duplicados surgiram por copiar, mesclar ou exportar com erro. O ponto central é a regra de comparação: maiúsculas, espaços no início ou fim, linhas vazias, pontuação, normalização e ordem original podem decidir se duas entradas são iguais. A ferramenta acelera a limpeza, mas não substitui revisão de domínio quando diferenças pequenas têm significado.
Como Usar
Operações Básicas
- Insira ou cole o texto a desduplicar na caixa de texto à esquerda
- Selecione o modo de desduplicação adequado (por linha, palavra, frase, etc.)
- Ajuste as opções conforme necessário (sensibilidade a maiúsculas/minúsculas, manter ordem, etc.)
- Veja os resultados da desduplicação e as estatísticas em tempo real à direita
- Clique no botão de copiar para salvar os resultados na área de transferência
Descrição dos Modos
- Por Linha: trata cada linha como uma unidade independente e remove linhas idênticas
- Por Palavra: divide o texto por espaços e remove palavras duplicadas
- Por Frase: divide por pontos, interrogações e exclamações, removendo frases duplicadas
- Por Parágrafo: divide por linhas em branco e remove parágrafos duplicados
- Por Caractere: remove caracteres que aparecem várias vezes no texto
Casos de uso
Princípio técnico
A deduplicação é uma varredura de passagem única apoiada por um Set do JavaScript. O Set do ECMAScript usa o algoritmo de igualdade SameValueZero (a mesma comparação que Array.prototype.includes usa, onde NaN é igual a NaN mas +0 é igual a -0) e a especificação exige lookup médio sublinear — o V8 implementa como uma tabela hash de endereçamento aberto com inserção amortizada O(1), de modo que toda a passagem é O(n) no número de itens. A alternativa ingênua — inserir em um array resultado e chamar indexOf em cada elemento — é O(n²) e se torna lenta por volta de 10k entradas. A divisão é específica do modo: modo linha divide em /\r?\n/ para absorver tanto CRLF (Windows) quanto LF (Unix), modo palavra divide em /\s+/, modo frase divide em /(?<=[.!?])\s+/ e modo parágrafo divide em /\n{2,}/. Cada unidade passa por normalizadores opcionais antes de se tornar uma chave do Set: trim() para remover espaços em branco no início e no fim, toLowerCase() para correspondência insensível a maiúsculas e String.prototype.normalize('NFC') para que strings visualmente idênticas escritas com formas compostas (é, U+00E9) vs decompostas (e + U+0301) colapsem em uma única entrada. A ordem é preservada porque o array resultado é construído em ordem de iteração — o Set é consultado apenas como um filtro 'já vi isso?'. A mesma escolha de estrutura de dados está por trás de SQL DISTINCT e Python set(); a única alternativa real para dezenas de milhões de itens é um filtro de Bloom probabilístico, que troca uma pequena taxa de falso positivo (≈10% a 10 bits/elemento) por memória constante e é exagerado para uma ferramenta de texto no navegador.
- Lookup do Set usa o algoritmo SameValueZero (ECMA-262 §7.2.10) — NaN corresponde a NaN, +0 corresponde a -0, caso contrário igualdade estrita
- V8 implementa Set como tabela hash; insert e has são O(1) amortizados, tornando toda a deduplicação O(n) versus O(n²) baseado em indexOf
- Regex do modo linha /\r?\n/ trata CRLF, LF e CR final em uma única divisão; ignorar isso deixa sufixos '\r' invisíveis que impedem a correspondência exata
- Normalização Unicode via String.prototype.normalize('NFC') colapsa formas compostas/decompostas (ex. 'é' U+00E9 vs 'e' + U+0301) em uma única chave
- Modo insensível a maiúsculas converte a chave para minúsculas apenas — o valor em caixa original é preservado na saída, de modo que o primeiro 'ERROR' é mantido literalmente enquanto linhas 'error' posteriores são descartadas
- Preservação de ordem é gratuita: o array resultado é construído em ordem de entrada e o Set é consultado apenas como filtro, comportando-se como SQL DISTINCT com ordenação estável
- Para 10M+ itens onde a memória se torna o gargalo, um filtro de Bloom (≈10 bits/elemento para taxa de falso positivo de 1%) substitui o Set — desnecessário no navegador, onde um Set de 1M strings cabe confortavelmente em menos de 100 MB
Exemplos
Deduplicação de linhas, mantendo a primeira ocorrência
Entrada:
apple
banana
apple
orange
banana
Saída:
apple
banana
orangeDeduplicação de linhas com espaços removidos
Entrada:
hello
hello
hello
world
Saída (após trim):
hello
worldDeduplicação sem distinção de maiúsculas/minúsculas
Entrada:
ERROR
error
Warning
WARNING
warning
Saída (sem distinção de maiúsculas/minúsculas):
ERROR
WarningExtração de lista única de e-mails
Entrada:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com
Saída (sem distinção de maiúsculas/minúsculas, modo de linha):
alice@example.com
bob@example.com
carol@example.comDeduplicação de palavras
Entrada: hello world hello again world
Saída: hello world againDeduplicação de frases
Entrada: This is a test. This is a test. Another sentence.
Saída: This is a test. Another sentence.Perguntas frequentes
O que é considerado duplicado?
Cada unidade (linha, palavra, frase, parágrafo ou caractere) é comparada com as outras. Unidades idênticas são duplicatas. Ative ou desative a sensibilidade a maiúsculas. A página produz a lista deduplicada e informa quantas duplicatas foram removidas.
Ele preserva a ordem?
Sim — a primeira ocorrência de cada item único é mantida em sua posição original e as duplicatas seguintes são descartadas. A saída preserva a ordem original.
Linhas em branco são tratadas como duplicatas?
Linhas em branco são comparadas como qualquer outra linha. A primeira linha em branco é mantida; linhas em branco idênticas posteriores são descartadas junto com outras duplicatas.
Posso deduplicar por uma substring ou coluna?
Não. A deduplicação funciona sobre o conteúdo completo de cada unidade (linha, palavra, frase, parágrafo ou caractere). Não há modo de deduplicação baseado em coluna ou substring.
Ele ordena a saída?
Não. A saída sempre preserva a ordem original. Não há opção de ordenação.
Que tamanho de arquivo ele suporta?
A memória do navegador é o limite. Centenas de milhares de linhas funcionam em navegadores desktop. Arquivos de milhões de linhas estouram a memória; para esses, use uma ferramenta de CLI como `sort -u` ou `awk '!seen[$0]++'`.
Meu texto é enviado para algum servidor?
Não. A deduplicação usa um Set em memória no seu navegador. As linhas coladas não são transmitidas.
Ferramentas relacionadas
Editor Markdown
Editor Markdown online gratuito com visualização em tempo real, destaque de sintaxe e exportação HTML. Suporte a tabelas, blocos de código, diagramas, escreva mais eficientemente.
Ferramenta de Contagem de Palavras
Contador de palavras online gratuito com estatísticas em tempo real para caracteres, palavras, tempo de leitura e mais. Ferramenta essencial para escritores.
Ferramenta de Conversão Pinyin
Conversor online de chinês para Pinyin. Suporta marcas de tom, números de tom e sem tom. Personalize separador e capitalização. Converta caracteres chineses para Pinyin instantaneamente.
Remover Quebras de Linha
Ferramenta online gratuita para remover quebras de linha do texto. Suporta remover todas as quebras, converter para espaços, remover linhas vazias e mesclar linhas vazias. Executa localmente no seu navegador.
Ferramenta de Conversão Chinês
Conversor chinês online gratuito para conversão de Chinês Simplificado para Tradicional. Suporte a padrões da China continental, Taiwan, Hong Kong, gerencie diferenças de vocabulário regional.
Teleprompter
Teleprompter online gratuito com rolagem automática suave, tela cheia, texto espelhado e ritmo ajustável para gravações, discursos e transmissões ao vivo.
