Commandes Linux

Commande Linux uniq

Commande Linux uniq
Qu'est-ce que « uniq »? C'est un excellent outil de ligne de commande qui signalera ou omettra tout texte en double dans l'entrée donnée. Il fait partie des coreutils de GNU et est donc disponible sur tous les systèmes UNIX/Linux. Commençons par « uniq »!

Utilisation unique

Voici à quoi ressemble la structure de base des commandes "uniq".

unique

Par exemple, vérifions le contenu de « dupliquer.SMS". Bien sûr, il contient beaucoup de contenu textuel en double pour les besoins de cet article.

chat en double.txt | sorte

Il y a clairement du contenu en double, à droite? Filtrez-les à travers "uniq".

chat en double | trier | unique

La sortie est tellement meilleure avec uniquement les valeurs uniques, à droite?

Cependant, vous n'avez tout simplement pas besoin d'utiliser la méthode de tuyauterie pour faire le travail. « uniq » peut également travailler directement sur les fichiers.

unique

Supprimer le contenu en double

Oui, supprimer le contenu en double de l'entrée et conserver la première occurrence uniquement est le comportement par défaut de « uniq ». Notez que cette suppression en double ne se produit que lorsque « uniq » trouve des éléments en double simultanés.

Regardons cet exemple. J'ai créé un autre "duplicate1.txt" qui contient des éléments en double. Cependant, ils ne sont pas adjacents les uns aux autres.

chauve-souris en double1.SMS

Maintenant, filtrez cette sortie en utilisant "uniq".

chat en double1.txt | unique

Tous les contenus en double sont là! C'est pourquoi si vous travaillez avec quelque chose de similaire à celui-ci, dirigez le contenu via « tri » pour vous assurer que tout le contenu est trié et que les doublons sont adjacents les uns aux autres.

chat en double1.txt | sorte

Maintenant, "uniq" fera son travail normalement.

chat en double1.txt | trier | unique

Nombre de répétitions

Si vous le souhaitez, vous pouvez vérifier combien de fois une ligne est répétée dans le contenu. Utilisez simplement le drapeau "-c" avec "uniq".

chat en double.txt | trier | uniq -c

Remarque : « uniq » fera également son travail régulier de suppression des doublons.

Impression de lignes en double

La plupart du temps, nous voulons nous débarrasser des doublons, à droite? Cette fois, que diriez-vous de vérifier ce qui est en double?

Oui, "uniq" est également capable de le faire. Dans ce cas, vous devez utiliser l'option "-D". J'utiliserai « trier » entre les deux pour avoir un résultat meilleur et plus raffiné.

chat en double.txt | trier | uniq -D

WOW! C'est BEAUCOUP de doublons! Cependant, tous les doublons sont regroupés, ce qui rend difficile la navigation. Que diriez-vous d'ajouter un petit espace entre les deux?

uniq --all-repeated=

Ici, 3 méthodes différentes sont disponibles : aucune (valeur par défaut), préfixer et séparer.

chat en double.txt | trier | uniq --all-repeated=préfixe

chat en double.txt | trier | uniq --all-repeated=separate

Maintenant, ça a l'air mieux.

Ignorer le contrôle d'unicité

Dans de nombreux cas, l'unicité doit être vérifiée par une partie différente de la ligne.

Comprenons cela par l'exemple. Dans le fichier duplicate1.txt, disons que la duplication est déterminée par la deuxième partie. Comment dites-vous à « uniq » de faire cela? Généralement, il vérifie le premier champ (par défaut). Eh bien, nous pouvons aussi le faire aussi. Il y a ce drapeau "-f" pour faire juste le travail.

uniq -f
chat en double1.txt | trier -k 2 | uniq -f 1

Si vous vous demandez avec le drapeau "sort", c'est pour dire à "sort" de trier en fonction de la deuxième colonne.

Afficher toutes les lignes mais séparer les doublons

Selon tous les exemples mentionnés ci-dessus, « uniq » ne conserve que la première occurrence du contenu dupliqué et supprime le reste. Que diriez-vous de supprimer complètement le contenu en double? Oui, en utilisant le drapeau "-u", nous pouvons forcer "uniq" à ne garder que les lignes non répétitives.

chat en double.txt | sorte

chat en double.txt | trier | uniq -u

Hmm, trop de doublons maintenant disparus…

Ignorer les caractères initiaux

Nous avons discuté de la façon de dire à « uniq » de faire son travail pour d'autres domaines, à droite? Il est temps de commencer le contrôle après un certain nombre de caractères initiaux. A cet effet, le drapeau "-s" accompagné du nombre de caractères va dire à "uniq" de faire le travail.

chat en double1.txt | trier -k 2 | uniq -s 2

C'est similaire à l'exemple où « uniq » devait faire sa tâche dans le deuxième champ uniquement. Voyons un autre exemple avec cette astuce.

chat en double.txt | trier | uniq -s 5

Vérifier les caractères initiaux UNIQUEMENT

Tout comme nous avons dit à « uniq » de sauter les premiers caractères, il est également possible de dire à « uniq » de limiter la vérification aux premiers caractères. Il y a un indicateur "-w" dédié à cet effet.

chat en double.txt | trier | uniq -w 5

Cette commande indique à « uniq » d'effectuer une vérification d'unicité dans les 5 premiers caractères.

Voyons un autre exemple de cette commande.

chat en double1.txt | trier | uniq -w 5

Il efface toutes les autres instances d'entrées « en double » car il a effectué le contrôle d'unicité sur la partie « dupli ».

Insensibilité à la casse

Lors de la vérification de l'unicité, « uniq » vérifie également la casse des caractères. Dans certaines situations, la sensibilité à la casse n'a pas d'importance, nous pouvons donc utiliser le drapeau "-i" pour rendre "uniq" insensible à la casse.

Ici je vous présente le fichier démo.

Une duplication vraiment astucieuse avec un mélange de lettres majuscules et minuscules, à droite? Il est temps de faire appel à la force de « uniq » pour purger la pagaille!

chat en double1.txt | trier | uniq -i

Vœu exaucé!

Sortie terminée par NULL

Le comportement par défaut de « uniq » consiste à terminer la sortie par une nouvelle ligne. Cependant, la sortie peut également être terminée par un NULL. C'est assez utile si vous allez l'utiliser dans des scripts. Ici, le drapeau "-z" est ce qui fait le travail.

chat en double.txt | trier | uniq -z

Combiner plusieurs drapeaux

Nous avons appris un certain nombre de drapeaux de « uniq », à droite? Que diriez-vous de les combiner ensemble?

Par exemple, je combine l'insensibilité à la casse et le nombre de répétitions ensemble.

Si vous envisagez de mélanger plusieurs drapeaux ensemble, assurez-vous d'abord qu'ils fonctionnent correctement ensemble. Parfois, les choses ne fonctionnent pas comme elles le devraient.

Dernières pensées

« uniq » est un outil assez unique offert par Linux. Avec autant de fonctionnalités puissantes, il peut être utile de nombreuses façons. Pour la liste de tous les drapeaux et leurs explications, consultez les pages man et info de « uniq ».

homme unique

info unique

Prendre plaisir!

Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...