Si vous travaillez principalement en ligne de commande et que vous traitez quotidiennement de nombreux fichiers texte, vous devez connaître Uniq commande.
La commande Uniq vous aide à trouver facilement les lignes répétées et en double d'un fichier. Uniq n'est pas seulement pour trouver des doublons, mais aussi pour supprimer les doublons, afficher le nombre d'occurrences des lignes en double, afficher uniquement les lignes répétées et afficher uniquement les lignes uniques, etc.
Veuillez noter que la commande 'uniq' ne détectera pas les lignes répétées à moins qu'elles ne soient adjacentes. Ainsi, vous devrez peut-être d'abord les trier ou combiner la commande sort avec uniq pour obtenir les résultats. Permettez-moi de vous montrer quelques exemples.
Étant donné que la commande uniq fait partie du package GNU coreutils, elle est préinstallée dans la plupart des distributions Linux. Alors, ne nous embêtons pas avec l'installation et voyons quelques exemples pratiques de commandes Uniq.
Exemples de commandes Uniq
Tout d'abord, créons un fichier avec des lignes en double.
$ vi ostechnix.txt
welcome to ostechnix welcome to ostechnix Linus is the creator of Linux. Linux is secure by default Linus is the creator of Linux. Top 500 super computers are powered by Linux
Comme vous le voyez dans le fichier ci-dessus, nous avons peu de lignes répétées (les première, deuxième, troisième et cinquième lignes sont des doublons).
1. Supprimer les lignes en double consécutives dans un fichier à l'aide de la commande Uniq
Si vous utilisez la commande 'uniq' sans aucun argument, elle supprimera toutes les lignes en double consécutives et n'affichera que les lignes uniques.
$ uniq ostechnix.txt
Exemple de résultat :
Comme vous pouvez le voir, la commande uniq a supprimé toutes les lignes en double consécutives dans le fichier donné. Vous avez peut-être également remarqué que la sortie ci-dessus contient toujours les doublons dans les deuxième et quatrième lignes. C'est parce que la commande uniq n'omettra les lignes répétées que si elles sont adjacentes. Nous pouvons, bien sûr, supprimer également ces doublons non consécutifs. Regardez le deuxième exemple ci-dessous.
2. Supprimer toutes les lignes en double
$ sort ostechnix.txt | uniq
Exemple de résultat :
Voir? Il n'y a pas de doublons ou de lignes répétées. En d'autres termes, la commande ci-dessus affichera chaque ligne une fois à partir du fichier ostechnix.txt
.
Dans l'exemple ci-dessus, nous avons utilisé la commande sort en conjonction avec uniq, car, comme je l'ai déjà mentionné, uniq ne trouvera pas les lignes en double/répétées à moins qu'elles ne soient adjacentes.
3. Afficher uniquement les lignes uniques d'un fichier
Pour afficher uniquement les lignes uniques d'un fichier, la commande serait :
$ sort ostechnix.txt | uniq -u
Exemple de résultat :
Linux is secure by default Top 500 super computers are powered by Linux
Comme vous pouvez le voir, nous n'avons que deux lignes uniques dans le fichier donné.
4. Afficher uniquement les lignes en double
De même, nous pouvons également afficher les lignes en double à partir d'un fichier comme ci-dessous.
$ sort ostechnix.txt | uniq -d
Exemple de résultat :
Linus is the creator of Linux. welcome to ostechnix
Ces deux sont les lignes répétées/dupliquées dans le fichier ostechnix.txt. Veuillez noter que -d
(d minuscule) n'imprimera que les lignes en double , un pour chaque groupe . Pour imprimer toutes les lignes en double , utilisez -D
(majuscule d) comme ci-dessous.
$ sort ostechnix.txt | uniq -D
Voyez la différence entre les deux drapeaux dans la capture d'écran ci-dessous.
5. Afficher le nombre d'occurrences de chaque ligne dans un fichier
Pour une raison quelconque, vous voudrez peut-être vérifier combien de fois une ligne est répétée dans le fichier donné. Pour ce faire, utilisez -c
drapeau comme ci-dessous.
$ sort ostechnix.txt | uniq -c
Exemple de résultat :
2 Linus is the creator of Linux. 1 Linux is secure by default 1 Top 500 super computers are powered by Linux 2 welcome to ostechnix
Nous pouvons également afficher le nombre d'occurrences de chaque ligne avec cette ligne, triées par la commande d'utilisation la plus fréquente :
$ sort ostechnix.txt | uniq -c | sort -nr
Exemple de résultat :
2 welcome to ostechnix 2 Linus is the creator of Linux. 1 Top 500 super computers are powered by Linux 1 Linux is secure by default
6. Limitez la comparaison à 'N' caractères
La commande Uniq nous permet de limiter la comparaison à un nombre particulier de caractères de lignes dans un fichier en utilisant -w
drapeau. Par exemple, limitons la comparaison aux 4 premiers caractères des lignes d'un fichier et affichons les lignes répétées comme indiqué ci-dessous.
$ uniq -d -w 4 ostechnix.txt
7. Evitez la comparaison avec les premiers 'N' caractères
Comme limiter la comparaison à N caractères de lignes dans un fichier, on peut aussi éviter de comparer les N premiers caractères en utilisant -s
drapeau.
La commande suivante évitera la comparaison avec les 4 premiers caractères des lignes d'un fichier :
$ uniq -d -s 4 ostechnix.txt
Pour éviter de comparer les N premiers champs au lieu de caractères, utilisez l'indicateur '-f' dans la commande ci-dessus.
Pour plus de détails, consultez la section d'aide ;
$ uniq --help
et les pages de manuel.
$ man uniq
Lire aussi :
- Le didacticiel de la commande Fold avec des exemples pour les débutants