La commande uniq (unique) est un outil essentiel pour le traitement de texte sous Linux. Elle vous aide à filtrer et à gérer les lignes dupliquées dans un fichier texte, mais il est important de comprendre son fonctionnement pour l'utiliser efficacement.
Suppression de base des doublons
La fonction principale de la commande uniq est de supprimer les lignes adjacentes dupliquées. Imaginez que vous avez un fichier nommé reading.txt avec le contenu suivant :
book
book
paper
paper
article
article
magazine
Pour supprimer les lignes répétées, vous pouvez exécuter la commande uniq :
$ uniq reading.txt
book
paper
article
magazine
Comme vous pouvez le constater, uniq affiche une version du fichier sans les lignes adjacentes dupliquées.
Options de filtrage avancées
La commande uniq fournit également plusieurs options pour une analyse plus détaillée.
Pour compter les occurrences de chaque ligne, utilisez l'indicateur -c (count) :
$ uniq -c reading.txt
2 book
2 paper
2 article
1 magazine
Pour afficher uniquement les lignes qui ne sont pas répétées (c'est-à-dire qui sont uniques), utilisez l'indicateur -u (unique) :
$ uniq -u reading.txt
magazine
Inversement, pour afficher uniquement les lignes qui sont dupliquées, utilisez l'indicateur -d (duplicated) :
$ uniq -d reading.txt
book
paper
article
L'importance du tri
Un détail critique concernant la commande uniq linux est qu'elle ne détecte les lignes dupliquées que si elles sont directement adjacentes les unes aux autres. Si les doublons sont dispersés dans le fichier, uniq ne les identifiera pas.
Considérez cette version de reading.txt où les doublons ne sont pas adjacents :
book
paper
book
paper
article
magazine
article
L'exécution de uniq sur ce fichier produira un résultat surprenant :
$ uniq reading.txt
book
paper
book
paper
article
magazine
article
Aucune ligne n'a été supprimée car aucune ligne identique n'était côte à côte. Pour résoudre ce problème, vous devez d'abord trier le contenu du fichier. En acheminant la sortie de sort vers uniq, vous vous assurez que toutes les lignes identiques deviennent adjacentes, permettant à uniq de fonctionner correctement. Cette combinaison est un modèle puissant et courant dans le scripting shell.
$ sort reading.txt | uniq
article
book
magazine
paper
Cette commande trie d'abord les lignes par ordre alphabétique, puis uniq filtre les doublons, vous donnant une liste claire des entrées uniques.