Removendo linhas duplicadas de um arquivo de texto no linux com uniq
Muitas vezes temos um arquivo com muitas linhas de informação, e em algumas situações estas linhas estão repetidas o que não desejamos. Podemos resolver isso de forma simples com o comando uniq
do Linux.
Primeiro temos um arquivo com vários nomes:
$ cat file.txt
Rodrigo
Fernando
Maria
Gisele
Ana
Gabriel
Antônia
Marcos
Maria
Julia
Maicon
Rodrigo
Ana
Fabricio
Maria
Note que o arquivo contém alguns nomes repetidos. Agora vamos utilizar o comando uniq
para listar sem repetições.
$sort file.txt | uniq
Ana
Antônia
Fabricio
Fernando
Gabriel
Gisele
Julia
Maicon
Marcos
Maria
Rodrigo
Agora não temos repetições. Se você é um pouco atento deve ter notado que utilizamos o comando sort
para listar os arquivos e mandar a saída para o uniq
, isso deve ser feito porque ele só remove linhas duplicadas adjacentes, sendo necessário assim ordenar a linhas do arquivo antes que possamos utilizar o comando.
O comando por padrão é case sensitive, mas podemos ignorar o caso utilizando o parâmetro -i
.
$ sort file.txt | uniq
Ana
Antônia
Fabricio
Fernando
Gabriel
Gisele
Julia
Maicon
Marcos
Maria
Rodrigo
RODRIGO
$ sort file.txt | uniq -i
Ana
Antônia
Fabricio
Fernando
Gabriel
Gisele
Julia
Maicon
Marcos
Maria
Rodrigo
Note que o nome RODRIGO em caixa alta foi tratado como diferente na execução do comando sem o parâmetro, e como repetido na com.
O comando uniq
também permite listar somente as linhas estão repetidas para isto basta utilizar o parâmetro -d
:
$ sort file.txt | uniq -d -i
Ana
Maria
Rodrigo
Também podemos utilizá-lo para contar quantas vezes uma linha linha aparece no arquivo com o parâmetro -c
.
$ sort file.txt | uniq -d -c
2 Ana
3 Maria
2 Rodrigo
Ele coloca no prefixo o número de vezes que a linha aparece no arquivo.
Como você deve ter percebido estamos apenas mostrando os resultados na tela, para criar um novo arquivo sem linhas duplica basta enviarmos o fluxo de saída para um novo arquivo.
$ sort file.txt | uniq -i > file_sem_repeticao.txt
$ cat file_sem_repeticao.txt
Ana
Antônia
Fabricio
Fernando
Gabriel
Gisele
Julia
Maicon
Marcos
Maria
Rodrigo
Essa foi um dica rápida mas que pode ser bastante útil.