Commande Linux uniq : Filtrage des doublons

LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, nous allons explorer la commande uniq sous Linux, un outil puissant pour identifier et filtrer les lignes en double dans les fichiers texte. Nous nous appuierons sur un scénario où vous incarnez un analyste de données au sein d'une entreprise de commerce électronique, chargé d'analyser les données d'achat des clients. La commande uniq vous aidera à traiter ces données efficacement, fournissant ainsi des informations précieuses sur le comportement des clients.

Examen des données clients brutes

Commençons par examiner nos données brutes d'achats clients. Ces données représentent les achats quotidiens effectués par les clients.

Tout d'abord, nous devons nous rendre dans le répertoire du projet. Sous Linux, on utilise la commande cd pour changer de répertoire. Le tilde (~) est un raccourci qui représente votre répertoire personnel (home).

cd ~/project

Cette commande change notre répertoire de travail actuel pour /home/labex/project. Maintenant que nous sommes dans le bon dossier, visualisons le contenu de notre fichier de données clients. Nous allons utiliser la commande cat, abréviation de "concatenate". Elle est couramment utilisée pour afficher le contenu des fichiers.

cat customer_purchases.txt

Vous devriez voir un résultat similaire à celui-ci :

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

Ce fichier contient les noms des clients et leurs achats, certains clients ayant effectué plusieurs transactions. Chaque ligne représente un achat unique, avec le nom du client suivi de la catégorie de l'article acheté, séparés par une virgule.

Tri des données

Avant de pouvoir utiliser la commande uniq efficacement, nous devons trier nos données. En effet, la commande uniq ne traite que les lignes en double adjacentes. Le tri garantit donc que toutes les entrées identiques se retrouvent les unes à la suite des autres.

Nous allons utiliser la commande sort pour trier nos données clients par ordre alphabétique :

sort customer_purchases.txt > sorted_purchases.txt

Analysons cette commande :

  • sort est la commande pour trier des lignes de texte.
  • customer_purchases.txt est le fichier d'entrée que nous trions.
  • > est un opérateur de redirection. Il prend la sortie de la commande située à sa gauche et l'écrit dans le fichier situé à sa droite.
  • sorted_purchases.txt est le nouveau fichier dans lequel nous sauvegardons les données triées.

Maintenant, visualisons le contenu du fichier trié :

cat sorted_purchases.txt

Vous devriez voir un résultat similaire à celui-ci :

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

Remarquez comment les entrées sont maintenant classées par ordre alphabétique selon le nom du client. Ce tri regroupe tous les achats d'un même client, ce qui est crucial pour les étapes suivantes.

Utilisation de uniq pour supprimer les entrées en double

Nos données étant triées, nous pouvons utiliser la commande uniq pour supprimer les doublons. Cela nous donnera une liste des achats clients uniques.

Exécutez la commande suivante :

uniq sorted_purchases.txt unique_purchases.txt

Analysons cette commande :

  • uniq est la commande pour filtrer les lignes répétées dans un fichier.
  • sorted_purchases.txt est notre fichier d'entrée (les données triées).
  • unique_purchases.txt est le fichier de sortie où nous enregistrons les résultats.

La commande uniq lit les données triées depuis sorted_purchases.txt, supprime les lignes identiques adjacentes et sauvegarde le résultat dans un nouveau fichier nommé unique_purchases.txt.

Maintenant, visualisons le contenu de ce nouveau fichier :

cat unique_purchases.txt

Vous devriez voir un résultat similaire à celui-ci :

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

Nous disposons désormais d'une liste d'achats clients uniques, où chaque client n'apparaît qu'une seule fois. Cela nous donne une vision claire des différents types d'achats effectués, sans répétition.

Comptage des achats avec uniq -c

La commande uniq devient encore plus puissante lorsqu'on utilise ses options. Utilisons l'option -c pour compter combien de fois chaque client a effectué un achat.

Exécutez la commande suivante :

uniq -c sorted_purchases.txt purchase_counts.txt

Analysons cette commande :

  • uniq est notre commande de filtrage.
  • -c est une option qui demande à uniq de faire précéder chaque ligne par son nombre d'occurrences.
  • sorted_purchases.txt est notre fichier d'entrée.
  • purchase_counts.txt est le fichier de sortie où nous enregistrons les résultats.

Cette commande compte le nombre d'apparitions de chaque ligne unique et sauvegarde le résultat dans purchase_counts.txt.

Maintenant, visualisons le contenu de ce nouveau fichier :

cat purchase_counts.txt

Vous devriez voir un résultat similaire à celui-ci :

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

Le nombre au début de chaque ligne indique combien de fois ce client a effectué un achat. Par exemple, Alice a effectué 3 achats d'électronique, tandis que Frank a effectué 1 achat d'articles de sport.

Identification des clients fidèles avec uniq -d

En tant qu'analyste de données, vous pourriez être intéressé par l'identification des clients récurrents. Nous pouvons utiliser l'option -d de la commande uniq pour n'afficher que les lignes en double, ce qui représente les clients ayant effectué plusieurs achats.

Exécutez la commande suivante :

uniq -d sorted_purchases.txt repeat_customers.txt

Analysons cette commande :

  • uniq est notre commande de filtrage.
  • -d est une option qui demande à uniq de n'afficher que les lignes qui apparaissent plusieurs fois.
  • sorted_purchases.txt est notre fichier d'entrée.
  • repeat_customers.txt est le fichier de sortie où nous enregistrons les résultats.

Cette commande identifie les lignes en double dans sorted_purchases.txt et les sauvegarde dans repeat_customers.txt.

Visualisons le contenu de ce nouveau fichier :

cat repeat_customers.txt

Vous devriez voir un résultat similaire à celui-ci :

Alice,Electronics
Bob,Books
Charlie,Clothing

Ce sont les clients qui ont effectué plus d'un achat. Cette information peut être précieuse pour des programmes de fidélité ou des campagnes de marketing ciblé.

Résumé

Dans cet atelier, nous avons exploré la commande uniq sous Linux et son application dans l'analyse des données d'achat clients. Nous avons appris à :

  1. Préparer les données pour uniq en les triant au préalable.
  2. Utiliser uniq pour supprimer les doublons d'un fichier trié.
  3. Utiliser uniq -c pour compter les occurrences de chaque ligne unique.
  4. Utiliser uniq -d pour identifier uniquement les lignes répétées.

Ces compétences sont essentielles pour les tâches d'analyse de données, vous permettant de traiter efficacement de grands ensembles de données et d'en extraire des informations pertinentes.

D'autres options de la commande uniq non abordées dans cet atelier incluent :

  • -u : Affiche uniquement les lignes uniques (celles qui n'apparaissent qu'une seule fois).
  • -i : Ignore la casse (majuscules/minuscules) lors de la comparaison des lignes.
  • -f N : Ignore les N premiers champs lors de la comparaison.
  • -s N : Ignore les N premiers caractères lors de la comparaison.