ToolActToolAct

Ferramenta de deduplicação de texto

Remova rapidamente conteúdo duplicado do texto, suporta deduplicação por linha, palavra e frase

Texto de entrada
Resultado deduplicado

Modo de deduplicação

Opções

Estatísticas

Itens originais0
Itens únicos0
Itens duplicados0

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

  1. Insira ou cole o texto a desduplicar na caixa de texto à esquerda
  2. Selecione o modo de desduplicação adequado (por linha, palavra, frase, etc.)
  3. Ajuste as opções conforme necessário (sensibilidade a maiúsculas/minúsculas, manter ordem, etc.)
  4. Veja os resultados da desduplicação e as estatísticas em tempo real à direita
  5. 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

Remover linhas, palavras, frases, parágrafos ou caracteres repetidosEscolha a unidade para deduplicar e a ferramenta mantém a primeira ocorrência preservando a ordem dos itens únicos. Cada modo usa uma estratégia de divisão e junção apropriada, de modo que os fluxos de linha, parágrafo, palavra e caractere se comportam de forma diferente. A busca por hash-set roda em tempo O(n) por passagem, então mesmo listas longas são deduplicadas em uma única rodada no navegador.
Auditar duplicatas antes de copiar o texto limpoAs estatísticas mostram contagem original, contagem única e contagem de duplicatas removidas. A exibição opcional de duplicatas lista os itens repetidos encontrados, o que é útil antes de limpar listas de e-mails, listas de palavras-chave, logs ou exportações de pesquisas. Revisar a lista de duplicatas primeiro permite confirmar que as entradas corretas foram mescladas antes de compartilhar a saída limpa.
Controlar correspondência sensível a maiúsculasAtive a diferenciação de maiúsculas quando Apple e apple devem permanecer separados, ou desative quando textos repetidos devem ser detectados independentemente da capitalização. Isso torna a mesma ferramenta útil tanto para limpeza de prosa quanto para listas técnicas precisas. O modo insensível a maiúsculas normaliza a entrada convertendo para minúsculas antes do hash, de modo que um log longo não mantém 'ERROR' e 'error' como entradas separadas.
Limpar listas de e-mail ou tags preservando a ordemCole uma exportação de e-mails e mude para o modo de linha com correspondência insensível a maiúsculas para mesclar [email protected] e [email protected]. A ordem da primeira ocorrência é mantida para que a lista limpa ainda respeite o agrupamento original para importação em CSV. O comportamento estável à ordenação é importante aqui: a saída deve preservar a sequência de entrada, não ser reordenada alfabeticamente.
Normalizar espaços em branco antes de deduplicar conjuntos de palavras-chaveRemova espaços no início e no fim e pule linhas vazias para que tabs acidentais de um copiar-e-colar não criem duplicatas fantasmas. Isso é essencial quando a lista de origem veio de uma exportação de planilha onde linhas vazias e entradas indentadas inflam a contagem de duplicatas. Uma segunda passagem na lista limpa com regras mais rígidas geralmente encontra zero colisões adicionais, o que é um bom sinal de que a normalização funcionou.

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
orange

Deduplicação de linhas com espaços removidos

Entrada:
hello
  hello
hello 
world

Saída (após trim):
hello
world

Deduplicaçã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
Warning

Extraçã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.com

Deduplicação de palavras

Entrada: hello world hello again world

Saída: hello world again

Deduplicaçã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.