Linux Command Line

Contando Linhas Únicas em Arquivos Linux de Forma Eficiente

Spread the love

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *