Texto

Como remover linhas duplicadas sem apagar a cópia errada

Três jeitos de remover duplicatas de uma lista, e o que fazer com aquele par de linhas que parecem idênticas e se recusam a virar uma só.

Cole a lista em um removedor de duplicatas, rode sort -u list.txt em um terminal, ou selecione a coluna no Excel e use Dados → Remover Duplicatas. Qualquer um dos três termina em segundos. O que custa a sua tarde é aquele par de linhas que parecem idênticas e se recusam a virar uma só, e a pergunta que nenhuma dessas ferramentas faz em voz alta: quando uma linha se repete, qual cópia deve sobreviver?

Qual é o jeito mais rápido de remover duplicatas de uma lista?

Para qualquer coisa que você consiga percorrer com os olhos — alguns milhares de endereços de e-mail, uma coluna de SKUs, um monte de URLs vindas de um crawl — uma ferramenta de navegador é o caminho mais curto, porque você consegue olhar o resultado antes de se comprometer com ele. Colar a lista em um removedor de linhas duplicadas devolve cada linha distinta uma única vez, na ordem em que cada uma apareceu pela primeira vez, e diz quantas repetições foram descartadas. Nada é enviado: é JavaScript rodando na sua aba, o que importa quando a lista é uma carteira de clientes ou um conjunto de URLs internas.

Seja qual for a ferramenta, verifique se ela preserva a ordem. Ordenar é o jeito mais barato de encontrar duplicatas, então várias das respostas padrão — sort -u, o Sort-Object -Unique do PowerShell — reordenam a lista como efeito colateral. Se a sua estava em uma ordem que fazia sentido, prioridade ou cronologia ou a ordem em que um script a escreveu, isso se perdeu e você não consegue recuperar a ordem a partir da saída.

Qual cópia deve sobreviver?

Se as duplicatas são idênticas byte a byte, não faz a menor diferença. No momento em que a sua regra de comparação fica frouxa — ignorar maiúsculas e minúsculas, ignorar os espaços ao redor — as cópias realmente diferem e você está escolhendo entre grafias.

A maioria das ferramentas decide isso em silêncio. O Excel mantém a linha de cima de cada grupo e apaga o resto. Com sort -u a pergunta nunca aparece, porque duas linhas só contam como iguais quando são idênticas. Só vale a pena pensar nisso quando você pediu de propósito para a ferramenta ser tolerante com maiúsculas ou espaços.

Por que duas linhas aparentemente idênticas não se juntam

Essa é a reclamação dirigida a todo removedor de duplicatas já escrito, e quase nunca é culpa da ferramenta. Alguma coisa invisível é diferente.

A normalização não vai te salvar dos sósias. O а cirílico (U+0430) e o a latino (U+0061) são letras diferentes que por acaso têm a mesma forma; o mesmo vale para um apóstrofo curvo e um reto, e para as letras latinas de largura completa usadas em textos em japonês. Nenhuma forma de normalização junta essas, porque juntá-las seria errado. Essas você conserta no nível do caractere, com uma passada de localizar e substituir em toda a lista antes de remover qualquer duplicata. Se você não conseguir descobrir qual caractere é o culpado, o guia de caracteres invisíveis no texto lista os suspeitos de sempre e como identificá-los.

Na linha de comando, uniq é uma armadilha

O uniq só remove duplicatas adjacentes. Ele percorre o arquivo comparando cada linha com a anterior, então uma lista com repetições espalhadas sai completamente inalterada, sem erro e sem aviso. Tem gente que perde horas com isso.

No Excel e no Google Sheets

O Remover Duplicatas do Excel fica na aba Dados. Selecione o intervalo, marque as colunas a comparar, e ele apaga as linhas que sobram ali mesmo e informa quantas foram. Duas coisas para saber: linhas são duplicatas só se todas as colunas marcadas coincidirem, e a exclusão é destrutiva — desfazer é o único caminho de volta, então duplique a planilha antes se os dados não forem reproduzíveis.

O Google Sheets tem o mesmo comando destrutivo em Dados → Limpeza de dados → Remover duplicados, mas também tem =UNIQUE(A2:A), que escreve a lista sem duplicatas em uma coluna livre e deixa a original intacta. Esse é o melhor padrão: dá para comparar as duas lado a lado, e o resultado se atualiza quando a origem muda. Para contar em vez de remover, =COUNTIF(A:A, A2) arrastado para baixo diz quantas vezes cada valor aparece na coluna.

Encontrar as duplicatas em vez de apagá-las

Muitas vezes as repetições são justamente o ponto. Qual endereço se cadastrou duas vezes, qual número de nota fiscal foi emitido para dois clientes, qual ID de rastreamento caiu na exportação mais de uma vez: você não quer uma lista limpa, quer os infratores.

A ferramenta do navegador tem um modo exatamente para isso: mude Mostrar para “Só as linhas que se repetiram” e marque o prefixo de contagem, e você recebe cada linha repetida uma vez com o número de vezes que ela apareceu. O inverso — apenas as linhas que apareceram exatamente uma vez — é útil para conciliar duas listas que deveriam ter batido. Na linha de comando, sort file | uniq -d faz o primeiro trabalho e uniq -u o segundo.

Onde a remoção de duplicatas por linha deixa de funcionar

Uma ferramenta que trata cada linha como uma única string opaca é rápida, previsível e errada para vários trabalhos comuns.

Um último hábito que vale cultivar: rode a remoção de duplicatas e depois olhe as contagens. “12.000 linhas na entrada, 11.998 distintas” geralmente significa que a sua lista já estava limpa e o problema é outro. “12.000 na entrada, 340 distintas” significa que a sua exportação rodou 35 vezes. Os números dizem mais sobre os dados do que a lista já limpa.

Se você tem uma lista aberta em outra janela, o removedor de linhas duplicadas resolve agora: aparar espaços e remover linhas em branco já vêm ligados, e as contagens embaixo mostram o que ele encontrou antes de você copiar qualquer coisa. Ligue a normalização Unicode se a lista veio de mais de uma origem.

A outra metade de arrumar uma lista é colocá-la em uma ordem sensata, e isso é menos óbvio do que parece quando entram números ou maiúsculas e minúsculas misturadas. Ordenar uma lista em ordem alfabética e numérica explica por que “item10” insiste em ficar antes de “item2”.

Perguntas frequentes

Como eu removo linhas duplicadas de um arquivo de texto?

Cole em um removedor de duplicatas do navegador para qualquer coisa até algumas centenas de milhares de linhas, ou rode sort -u file.txt em um terminal para arquivos maiores. Em uma planilha, selecione a coluna e use Dados e depois Remover Duplicatas. Os três mantêm uma cópia de cada linha distinta.

Como eu removo duplicatas mas mantenho a ordem original?

Use uma ferramenta que indexe as linhas em vez de ordená-las. Na linha de comando, awk '!seen[$0]++' file.txt mantém a primeira ocorrência de cada linha na posição original. O sort -u puro não consegue fazer isso, porque ordenar é justamente como ele encontra as duplicatas.

Por que as linhas duplicadas não estão sendo removidas?

Porque elas não são realmente idênticas. As causas de sempre são um espaço no fim, um espaço não separável colado de uma página web, um acento guardado na forma decomposta, ou um caractere parecido de outro alfabeto. Ligue primeiro o corte de espaços e a normalização Unicode; se as linhas ainda se recusarem a juntar, a diferença é um caractere que você não consegue ver e precisa localizar e substituir diretamente.

O uniq remove todas as linhas duplicadas?

Não. O uniq só compara cada linha com a imediatamente anterior, então duplicatas espalhadas pelo arquivo sobrevivem intactas. Ordene a entrada antes com sort file | uniq, ou use sort -u, que faz as duas coisas em uma única passada.

Como eu descubro quais linhas estão duplicadas em vez de apagá-las?

Mude a ferramenta do navegador para “Só as linhas que se repetiram” e marque o prefixo de contagem, que mostra cada linha repetida uma vez com quantas vezes ela apareceu. Na linha de comando, sort file | uniq -d lista as linhas repetidas e uniq -c coloca a contagem como prefixo de cada linha.

É seguro remover duplicatas de uma lista online?

Depende de o site enviar ou não o seu texto para um servidor. Muitos enviam, o que significa que uma lista de clientes ou uma exportação interna fica nos logs de outra pessoa. Uma ferramenta que roda no navegador nunca transmite o texto, e fechar a aba descarta o que você colou.

Última atualização 19 de setembro de 2026