Como posso remover linhas duplicadas?
Outro comando que é frequentemente usado com sort
é uniq
,
cuja função é remover linhas duplicadas.
Mais especificamente,
ele remove as linhas duplicadas adjacentes.
Se um arquivo contiver:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
então uniq
produzirá:
2017-07-03
2017-08-03
mas se ele contiver:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
então uniq
imprimirá todas as quatro linhas.
O motivo é que o uniq
foi criado para trabalhar com arquivos muito grandes.
Para remover linhas não adjacentes de um arquivo,
ele teria que manter o arquivo inteiro na memória
(ou pelo menos,
todas as linhas únicas que encontrar).
Removendo apenas as duplicatas adjacentes,
ele só precisa manter a linha única mais recente na memória.
Este exercício faz parte do curso
Introdução ao Shell
Instruções de exercício
Escreva um pipeline para:
- obter a segunda coluna de
seasonal/winter.csv
, - remova a palavra "Tooth" da saída para exibir apenas os nomes dos dentes,
- classifique a saída de modo que todas as ocorrências de um determinado nome de dente fiquem adjacentes; e
- exiba o nome de cada dente uma vez, juntamente com uma contagem da frequência com que ele ocorre.
O início do seu pipeline é o mesmo do exercício anterior:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Amplie-o com um comando sort
e use uniq -c
para exibir linhas únicas com uma contagem da frequência com que cada uma ocorre, em vez de usar uniq
e wc
.
Exercício interativo prático
Transforme a teoria em ação com um de nossos exercícios interativos
