ComeçarComece gratuitamente

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

Ver Curso

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

Comece o exercício