De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como encontrar e manipular linhas duplicadas no Linux

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de abril de 2026

No ecossistema Unix/Linux, a tarefa de identificar ou remover linhas duplicadas é um exemplo clássico de como pequenos utilitários trabalhando juntos resolvem problemas complexos. Se você lida com logs, listas de e-mails ou extração de dados, dominar o sort e o uniq é indispensável.

O comando principal para lidar com duplicatas é o uniq. No entanto, ele possui uma característica importante: o uniq só compara linhas adjacentes. Por isso, quase sempre o utilizaremos em conjunto com o sort.

1. Filtrando apenas as linhas que se repetem

Se você tem um arquivo e precisa saber quais entradas aparecem mais de uma vez, utilize a opção -d (duplicated):

$ sort arquivo.txt | uniq -d

Este comando exibirá apenas uma instância de cada linha que possui duplicatas.

2. Contando as ocorrências

Para uma análise mais profunda (como identificar IPs em um log ou palavras mais frequentes), a opção -c (count) é a ideal:

$ sort arquivo.txt | uniq -c | sort -nr

O que acontece aqui?

  1. sort: Ordena o arquivo.
  2. uniq -c: Conta as repetições e prefixa cada linha com o número de vezes que ela apareceu.
  3. sort -nr: Ordena numericamente (-n) de forma reversa (-r), colocando as linhas mais frequentes no topo.

3. Exibindo todas as linhas duplicadas

Se o seu objetivo é ver o conteúdo bruto das linhas que se repetem (todas as ocorrências, não apenas uma), utilize o -D:

$ sort arquivo.txt | uniq -D

4. Removendo duplicatas (Limpando o arquivo)

Se você quer apenas um arquivo limpo, com entradas únicas, pode usar o uniq puro ou o próprio atalho do sort:

# Opção 1:

$ sort arquivo.txt | uniq > unico.txt

# Opção 2 (mais eficiente):

$ sort -u arquivo.txt > unico.txt

5. O "Pulo do Gato": Mantendo a ordem original com awk

O problema do sort é que ele altera a sequência cronológica ou lógica do seu arquivo. Se você precisa remover ou encontrar duplicatas preservando a ordem original, o awk é a ferramenta certa:

Para remover duplicatas mantendo a ordem:

$ awk '!seen[$0]++' arquivo.txt

Para mostrar apenas as linhas que estão sobrando (as duplicatas):

$ awk 'seen[$0]++ == 1' arquivo.txt

Aqui, o awk usa um array associativo (seen) para indexar o conteúdo da linha e verificar se ele já passou pelo processamento antes.

Resumo de Opções do uniq

Parâmetro Função
-d Mostra apenas linhas duplicadas (uma vez cada).
-D Mostra todas as instâncias das linhas duplicadas.
-u Mostra apenas as linhas únicas (ignora as que se repetem).
-c Conta as ocorrências.
-i Ignora case (case-insensitive).

Conclusão: Para arquivos pequenos e médios, a combinação sort | uniq é imbatível pela simplicidade. Para arquivos gigantescos ou quando a ordem é sagrada, o awk assume o protagonismo.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida