Commande Linux uniq : Filtrage des doublons

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous allons explorer la commande uniq sous Linux, un outil puissant pour identifier et filtrer les lignes dupliquées dans les fichiers texte. Nous utiliserons un scénario où vous êtes un analyste de données dans 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, en fournissant des informations précieuses sur le comportement des clients.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/TextProcessingGroup -.-> linux/uniq("Duplicate Filtering") subgraph Lab Skills linux/cat -.-> lab-219199{{"Commande Linux uniq : Filtrage des doublons"}} linux/cd -.-> lab-219199{{"Commande Linux uniq : Filtrage des doublons"}} linux/sort -.-> lab-219199{{"Commande Linux uniq : Filtrage des doublons"}} linux/uniq -.-> lab-219199{{"Commande Linux uniq : Filtrage des doublons"}} end

Examiner les données brutes des clients

Commençons par examiner nos données brutes d'achat des 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, nous utilisons la commande cd pour changer de répertoire. Le tilde (~) est un raccourci qui représente votre répertoire personnel (home directory).

cd ~/project

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

cat customer_purchases.txt

Vous devriez voir une sortie similaire à ceci :

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 effectuant plusieurs achats. Chaque ligne représente un seul achat, le nom du client étant suivi de la catégorie d'article qu'il a achetée, séparés par une virgule.

Trier les données

Avant de pouvoir utiliser efficacement la commande uniq, nous devons trier nos données. La commande uniq fonctionne sur les lignes dupliquées adjacentes, donc le tri garantit que toutes les entrées dupliquées sont côte à côte.

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

sort customer_purchases.txt > sorted_purchases.txt

Décortiquons cette commande :

  • sort est la commande pour trier les 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 à sa gauche et l'écrit dans le fichier à sa droite.
  • sorted_purchases.txt est le nouveau fichier dans lequel nous enregistrons les données triées.

Maintenant, examinons le contenu du fichier trié :

cat sorted_purchases.txt

Vous devriez voir une sortie similaire à ceci :

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 triées par ordre alphabétique selon le nom du client. Ce tri alphabétique regroupe tous les achats d'un même client, ce qui est essentiel pour les étapes suivantes.

Utilisation de uniq pour supprimer les entrées dupliquées

Maintenant que nos données sont triées, nous pouvons utiliser la commande uniq pour supprimer les entrées dupliquées. Cela nous donnera une liste des achats uniques des clients.

Exécutez la commande suivante :

uniq sorted_purchases.txt unique_purchases.txt

Décortiquons 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 dans lequel nous enregistrons les résultats.

La commande uniq lit les données triées à partir de sorted_purchases.txt, supprime les lignes dupliquées adjacentes et enregistre le résultat dans un nouveau fichier appelé unique_purchases.txt.

Maintenant, examinons le contenu du nouveau fichier :

cat unique_purchases.txt

Vous devriez voir une sortie similaire à ceci :

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

Maintenant, nous avons une liste des achats uniques des clients, chaque client n'apparaissant qu'une seule fois. Cela nous donne une vue claire des différents types d'achats effectués, sans répétition.

Compter les achats avec uniq -c

La commande uniq devient encore plus puissante lorsque nous utilisons 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

Décortiquons cette commande :

  • uniq est notre commande pour filtrer les lignes répétées.
  • -c est une option qui indique à uniq de préfixer les lignes par le nombre d'occurrences.
  • sorted_purchases.txt est notre fichier d'entrée.
  • purchase_counts.txt est le fichier de sortie dans lequel nous enregistrons les résultats.

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

Maintenant, examinons le contenu de ce nouveau fichier :

cat purchase_counts.txt

Vous devriez voir une sortie similaire à ceci :

   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.

Trouver les clients récurrents 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 afficher uniquement les lignes dupliquées, qui représentent les clients ayant effectué plusieurs achats.

Exécutez la commande suivante :

uniq -d sorted_purchases.txt repeat_customers.txt

Décortiquons cette commande :

  • uniq est notre commande pour filtrer les lignes répétées.
  • -d est une option qui indique à uniq d'afficher seulement les lignes dupliquées.
  • sorted_purchases.txt est notre fichier d'entrée.
  • repeat_customers.txt est le fichier de sortie dans lequel nous enregistrons les résultats.

Cette commande identifie les lignes dupliquées dans sorted_purchases.txt et les enregistre dans repeat_customers.txt.

Examinons le contenu de ce nouveau fichier :

cat repeat_customers.txt

Vous devriez voir une sortie similaire à ceci :

Alice,Electronics
Bob,Books
Charlie,Clothing

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

Résumé

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

  1. Préparer les données pour l'utilisation de uniq en les triant d'abord.
  2. Utiliser uniq pour supprimer les entrées dupliquées d'un fichier trié.
  3. Utiliser uniq -c pour compter le nombre d'occurrences de chaque ligne unique.
  4. Utiliser uniq -d pour identifier les lignes dupliquées.

Ces compétences sont précieuses pour les tâches d'analyse de données, vous aidant à traiter efficacement et à extraire des informations à partir de grands ensembles de données.

Les options supplémentaires de la commande uniq non couvertes dans ce laboratoire incluent :

  • -u : Afficher seulement les lignes uniques (les lignes qui apparaissent exactement une fois)
  • -i : Ignorer la casse lors de la comparaison des lignes
  • -f N : Ignorer les N premiers champs lors de la comparaison des lignes
  • -s N : Ignorer les N premiers caractères lors de la comparaison des lignes

Ressources