Contar linhas únicas em um arquivo é uma tarefa comum no Linux. Este artigo apresenta dois métodos eficientes de linha de comando: usando sort
e uniq
, e usando awk
.
Sumário
Contando Linhas Únicas com sort
e uniq
Este método combina o poder de sort
e uniq
para uma abordagem direta. sort
organiza as linhas alfabeticamente, um pré-requisito para uniq
, que conta apenas linhas idênticas consecutivas. A opção -c
em uniq
adiciona um prefixo de contagem a cada linha.
Para contar linhas únicas em file.txt
:
sort file.txt | uniq -c
Isso exibe cada linha única com sua contagem. Para obter o número total de linhas únicas, canalize a saída para wc -l
:
sort file.txt | uniq -c | wc -l
Exemplo:
Se file.txt
contém:
apple
banana
apple
orange
banana
apple
sort file.txt | uniq -c
produz:
3 apple
2 banana
1 orange
E sort file.txt | uniq -c | wc -l
produz:
3
Contando Linhas Únicas com awk
awk
oferece uma solução flexível, particularmente útil para cenários mais complexos. Este método emprega um array associativo para rastrear linhas únicas e suas contagens.
Para contar linhas únicas e exibi-las com suas contagens:
awk '{count[$0]++} END {for (line in count) print count[line], line}' file.txt
Este script incrementa a contagem para cada linha no array count
, usando a linha como chave. O bloco END
itera pelo array, imprimindo a contagem de cada linha e a própria linha.
Para obter apenas a contagem total de linhas únicas:
awk '{count[$0]++} END {print length(count)}' file.txt
Isso usa length(count)
para exibir diretamente o número de linhas únicas (o tamanho do array).
Exemplo:
Usando o mesmo file.txt
, o primeiro comando awk
produz a mesma saída que o método sort | uniq -c
. O segundo comando awk
produz 3
, indicando três linhas únicas.
Escolha o método que melhor se adapta às suas necessidades. sort
e uniq
são mais simples para tarefas básicas; awk
oferece maior flexibilidade para cenários complexos.