Comando uniq do Linux: Filtragem de Duplicatas

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, vamos explorar o comando uniq no Linux, uma ferramenta poderosa para identificar e filtrar linhas duplicadas em arquivos de texto. Utilizaremos um cenário onde você atua como analista de dados em uma empresa de e-commerce, com a tarefa de analisar os dados de compras dos clientes. O comando uniq ajudará você a processar esses dados de forma eficiente, fornecendo insights valiosos sobre o comportamento do consumidor.

Examinando os Dados Brutos de Clientes

Vamos começar examinando nossos dados brutos de compras. Estes dados representam as compras diárias realizadas pelos clientes.

Primeiro, precisamos navegar até o diretório do projeto. No Linux, usamos o comando cd para mudar de diretório. O til (~) é um atalho que representa o seu diretório pessoal (home).

cd ~/project

Este comando altera nosso diretório de trabalho atual para /home/labex/project. Agora que estamos no local correto, vamos visualizar o conteúdo do nosso arquivo de dados de clientes. Usaremos o comando cat (abreviação de "concatenate"), que é comumente utilizado para exibir o conteúdo de arquivos.

cat customer_purchases.txt

Você deverá ver uma saída semelhante a esta:

Alice,Electronics
Bob,Books
Charlie,Clothing
Alice,Electronics
David,Home Goods
Bob,Books
Eve,Toys
Charlie,Clothing
Frank,Sports
Alice,Electronics

Este arquivo contém nomes de clientes e suas respectivas compras, sendo que alguns clientes realizaram múltiplas compras. Cada linha representa uma única transação, com o nome do cliente seguido pela categoria do item comprado, separados por uma vírgula.

Ordenando os Dados

Antes de utilizarmos o comando uniq de forma eficaz, precisamos ordenar nossos dados. O comando uniq atua sobre linhas duplicadas adjacentes, portanto, a ordenação garante que quaisquer entradas repetidas fiquem posicionadas uma ao lado da outra.

Usaremos o comando sort para ordenar alfabeticamente nossos dados de clientes:

sort customer_purchases.txt > sorted_purchases.txt

Vamos detalhar este comando:

  • sort é o comando para ordenar linhas de texto.
  • customer_purchases.txt é o arquivo de entrada que estamos ordenando.
  • > é um operador de redirecionamento. Ele pega a saída do comando à sua esquerda e a grava no arquivo à sua direita.
  • sorted_purchases.txt é o novo arquivo onde estamos salvando os dados ordenados.

Agora, vamos visualizar o conteúdo do arquivo ordenado:

cat sorted_purchases.txt

Você deverá ver uma saída semelhante a esta:

Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Observe como as entradas agora estão organizadas alfabeticamente pelo nome do cliente. Essa ordenação agrupa todas as compras do mesmo cliente, o que é crucial para as próximas etapas.

Usando o uniq para Remover Entradas Duplicadas

Com os dados devidamente ordenados, podemos usar o comando uniq para remover as duplicatas. Isso nos fornecerá uma lista de compras únicas por cliente.

Execute o seguinte comando:

uniq sorted_purchases.txt unique_purchases.txt

Entendendo o comando:

  • uniq é o comando para filtrar linhas repetidas em um arquivo.
  • sorted_purchases.txt é o nosso arquivo de entrada (os dados ordenados).
  • unique_purchases.txt é o arquivo de saída onde salvaremos os resultados.

O comando uniq lê os dados ordenados de sorted_purchases.txt, remove as linhas duplicadas consecutivas e salva o resultado em um novo arquivo chamado unique_purchases.txt.

Agora, vamos conferir o conteúdo do novo arquivo:

cat unique_purchases.txt

Você deverá ver algo assim:

Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Agora temos uma lista de compras únicas, onde cada cliente aparece apenas uma vez por categoria. Isso nos dá uma visão clara dos diferentes tipos de compras realizadas, sem repetições desnecessárias.

Contando Compras com uniq -c

O comando uniq torna-se ainda mais poderoso quando utilizamos suas opções. Vamos usar a opção -c para contar quantas vezes cada cliente realizou uma compra.

Execute o comando abaixo:

uniq -c sorted_purchases.txt purchase_counts.txt

Detalhamento do comando:

  • uniq é o nosso comando de filtragem.
  • -c é uma opção que instrui o uniq a prefixar cada linha com o número de ocorrências encontradas.
  • sorted_purchases.txt é o arquivo de entrada.
  • purchase_counts.txt é o arquivo de saída com os resultados.

Este comando contabiliza a quantidade de vezes que cada linha única aparece e salva o resultado em purchase_counts.txt.

Vamos visualizar o conteúdo deste novo arquivo:

cat purchase_counts.txt

A saída deve ser semelhante a esta:

   3 Alice,Electronics
   2 Bob,Books
   2 Charlie,Clothing
   1 David,Home Goods
   1 Eve,Toys
   1 Frank,Sports

O número no início de cada linha indica quantas compras aquele cliente realizou. Por exemplo, Alice fez 3 compras de Eletrônicos, enquanto Frank fez apenas 1 compra de itens Esportivos.

Identificando Clientes Recorrentes com uniq -d

Como analista de dados, você pode ter interesse em identificar clientes recorrentes. Podemos usar a opção -d do comando uniq para exibir apenas as linhas que possuem duplicatas, representando os clientes que fizeram múltiplas compras.

Execute o seguinte comando:

uniq -d sorted_purchases.txt repeat_customers.txt

Entendendo os parâmetros:

  • uniq é o comando principal.
  • -d é a opção que diz ao uniq para imprimir somente as linhas duplicadas.
  • sorted_purchases.txt é o arquivo de entrada.
  • repeat_customers.txt é o arquivo de saída.

Este comando identifica quais linhas se repetem em sorted_purchases.txt e as salva em repeat_customers.txt.

Vamos ver quem são esses clientes:

cat repeat_customers.txt

Você verá o seguinte:

Alice,Electronics
Bob,Books
Charlie,Clothing

Estes são os clientes que realizaram mais de uma compra. Esta informação é extremamente valiosa para programas de fidelidade ou campanhas de marketing direcionadas.

Resumo

Neste laboratório, exploramos o comando uniq no Linux e sua aplicação prática na análise de dados de compras de clientes. Aprendemos como:

  1. Preparar os dados para o uniq realizando a ordenação prévia com o sort.
  2. Utilizar o uniq para remover entradas duplicadas de um arquivo ordenado.
  3. Usar o uniq -c para contar as ocorrências de cada linha única.
  4. Usar o uniq -d para identificar especificamente as linhas que se repetem.

Essas habilidades são fundamentais para tarefas de análise de dados, permitindo que você processe e extraia informações úteis de grandes conjuntos de dados de maneira eficiente.

Outras opções do comando uniq não abordadas neste laboratório incluem:

  • -u: Exibe apenas as linhas que são únicas (que aparecem exatamente uma vez).
  • -i: Ignora a diferença entre maiúsculas e minúsculas ao comparar as linhas.
  • -f N: Pula os primeiros N campos ao realizar a comparação.
  • -s N: Pula os primeiros N caracteres ao realizar a comparação.

Recursos Adicionais