🧰 UtlKit

Como Usar a Remover Duplicatas: Deduplicação de Linhas por Coincidência Exata com a Primeira Aparição, no Navegador

Um bloco de texto, partido em linhas e deduplicado por coincidências exatas conservando a primeira aparição, com uma contagem verde de linhas removidas, tudo calculado no navegador.

A ferramenta de Remover Duplicatas toma um bloco de texto, o parte em linhas e apaga cada linha que seja um repetido exato de uma linha anterior, no navegador. O marcador mostra o exemplo em marcha: apple, banana, apple, cherry, banana, date. Você pressiona o botão Remove Duplicates, e o bloco de resultado imprime o texto deduplicado num campo de somente leitura, com uma linha verde acima lendo Removed 2 duplicate(s). Nada é enviado a lugar nenhum: a divisão, o conjunto e a união correm no dispositivo, e o botão Clear apaga a entrada, a saída e a contagem.

O que a ferramenta recebe e o que dá

A entrada é uma única área de texto, de dez linhas de altura e redimensionável, e nada mais é pedido. Em cima há um botão Clear que reinicia tudo, e embaixo um botão de ação, Remove Duplicates, então o cálculo não é ao vivo: o resultado só muda quando você o pressiona. A saída é uma área de texto de somente leitura da mesma altura, e um botão de copiar se senta junto ao seu rótulo Result, mas só quando a saída não está vazia. A linha verde de contagem, Removed N duplicate(s), aparece só quando N está acima de zero, então uma entrada sem repetições mostra o resultado e nada mais.

Como a deduplicação funciona

A entrada é partida num array de linhas pelas quebras de linha, e as linhas são percorridas em ordem com um conjunto que lembra cada linha já conservada. A primeira vez que uma linha é vista, ela entra no conjunto e na lista de saída; cada vez que é vista de novo, só é contada como duplicada e descartada. As linhas conservadas são unidas de volta com quebras de linha, então a saída é a entrada com as repetições tiradas, na ordem original de primeira aparição, nunca reordenada. Para o marcador, apple, banana, apple, cherry, banana, date, o resultado é apple, banana, cherry, date, com 2 removidas. O percurso é uma passada sobre as linhas, então uma entrada de 100,000 linhas com 50,000 únicas é processada em cerca de 40 milissegundos.

O que conta como a mesma linha

Duas linhas são a mesma só quando cada caractere coincide, porque a comparação é uma prova exata de string, sem normalização. Maiúsculas contam, então A e a são linhas diferentes e ambas ficam. Espaços contam, então um a com um espaço final e um a com um espaço inicial são linhas diferentes e ambas ficam. Acentos contam, então café e cafe são linhas diferentes e ambas ficam. Linhas vazias também contam como linhas: uma linha que está vazia continua sendo uma linha, e uma linha que é só um espaço é uma linha de espaço, então duas linhas de só espaços reduzem a uma. Se suas repetições diferem em uma dessas coisas, não são repetições para esta ferramenta, e a contagem fica em zero.

O que acontece com quebras de linha e linhas vazias

A divisão só procura o caractere de quebra de linha, então um arquivo que termina com uma quebra de linha sai com uma linha extra, vazia, no final, e como qualquer primeira aparição de uma linha vazia, ela é conservada: uma entrada de a e b, cada um em sua linha terminando com uma quebra de linha, volta sem mudanças, com 0 removidas. Duas linhas vazias consecutivas reduzem a uma, e uma entrada que é uma única quebra de linha remove uma linha e imprime um resultado vazio, que ainda mostra o bloco de resultado mas sem botão de copiar. Quebras de linha de Windows são a lâmina: a divisão não tira o retorno de carrinho, então o mesmo texto lido de um arquivo de Windows é uma linha diferente do mesmo texto sem ele, e uma cópia do resultado conserva os retornos de carrinho.

Como a contagem de removidas é lida

A linha verde conta só as linhas que foram jogadas fora, não as que foram conservadas. Quatro linhas idênticas, x x x x, removem 3 e conservam 1; uma entrada entrelaçada, 1 2 1 2, remove 2 e conserva 2; e uma entrada sem repetições exatas não mostra nada, porque a linha só se renderiza quando a contagem está acima de zero. A contagem é a diferença entre o número de linhas da entrada e o da saída, nada mais.

Para onde o texto vai

Para lugar nenhum fora do dispositivo. O valor da área de texto é lido pela página, a divisão, o conjunto e a união correm no navegador, e nenhuma requisição de rede é feita em nenhum ponto. Não há histórico nem resultado guardado: o único estado são os três valores que a página guarda, entrada, saída e contagem, e Clear os reinicia para vazio e zero. Copiar usa a área de transferência do navegador, então o texto sai da página só se você pressionar copiar e colar em outro lugar.

O que não é

A ferramenta deduplica linhas, não normaliza o texto: para tirar os espaços e as linhas vazias que fazem linhas quase idênticas parecerem diferentes, use antes o Limpa Espaços em Branco; para colocar as linhas conservadas em ordem alfabética depois, isso é o que a ferramenta Ordenar Linhas faz; e para contar quantas vezes cada palavra aparece em vez de cada linha, isso é o que o Contador de Frequência de Palavras faz. Para o passo a passo de uma ferramenta de texto da mesma veia, veja a guia de reversão de texto.

Ferramentas Relacionadas

Perguntas Frequentes

A ferramenta de Remover Duplicatas envia meu texto para um servidor?

Não. A área de texto é lida pela página, e o único cálculo é o percurso de uma passada sobre as linhas com um conjunto de linhas conservadas, então o texto nunca sai do dispositivo e não há nenhuma requisição de rede em nenhum ponto. Não há histórico nem resultado guardado: pressionar Clear ou recarregar a aba esvazia a entrada, a saída e a contagem.

Por que minhas linhas duplicadas não foram removidas?

A coincidência é exata, caractere por caractere, sem normalização. Uma linha que difere por uma letra de maiúscula, um espaço na borda, ou um acento é uma linha diferente, então A e a ficam ambas, e uma linha que carrega o retorno de carrinho de um arquivo de Windows não é a mesma linha que o mesmo texto sem ele. A contagem fica em zero porque nenhuma delas é um repetido exato de uma linha anterior.

As linhas vazias são removidas?

Linhas vazias são linhas, então são deduplicadas como qualquer outra linha: a primeira linha vazia fica e cada linha vazia posterior é contada como duplicada. Uma entrada que é uma única quebra de linha remove uma linha, e o bloco de resultado mostra uma saída vazia sem botão de copiar. Um arquivo que termina com uma quebra de linha conserva essa linha vazia final, porque é a primeira aparição de uma linha vazia.

O que a contagem de removidas significa?

É o número de linhas que foram jogadas fora, não o número que foi conservado, e só se renderiza quando está acima de zero. Quatro linhas idênticas removem 3, um par entrelaçado, 1 2 1 2, remove 2, e uma entrada sem repetições exatas não mostra linha de contagem em absoluto. A contagem é a diferença entre o número de linhas da entrada e o da saída, nada mais.

A ferramenta ordena o resultado?

Não. A saída conserva as linhas na ordem em que sua primeira aparição apareceu na entrada, que é por quê que o subtítulo diz que preserva a ordem original. Para ordenar as linhas conservadas depois de deduplicar, passe o resultado pela ferramenta Ordenar Linhas.

Artigos Relacionados