GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Linux Uniq Command pour débutants (10 exemples)

Si vous êtes un utilisateur de ligne de commande Linux et que votre travail consiste à jouer avec des fichiers texte, vous devez savoir (si ce n'est déjà fait) qu'il existe de nombreux utilitaires de ligne de commande qui peuvent vous être d'une grande aide dans différentes situations. Par exemple, il existe un outil nommé 'uniq' qui signale voire supprime les lignes répétées dans un fichier.

Dans cet article, nous aborderons 'uniq' à travers des exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples et instructions mentionnés dans ce didacticiel ont été testés sur Ubuntu 16.04LTS.

Commande Linux Uniq

Comme déjà mentionné au début, la commande uniq signale ou omet les lignes répétées. Voici la syntaxe générale de cette commande :

uniq [OPTION]... [ENTREE [SORTIE]]

Selon la page de manuel de l'utilitaire :"Filtrer les lignes correspondantes adjacentes à partir de l'ENTRÉE (ou de l'entrée standard), en écrivant dans la SORTIE (ou la sortie standard). Sans option, les lignes correspondantes sont fusionnées à la première occurrence."

Voici quelques exemples qui vous aideront à mieux comprendre l'outil.

1. Comment supprimer des lignes répétées à l'aide de la commande uniq

Supposons que le fichier contienne les lignes suivantes :

De toute évidence, chaque ligne est répétée. Lançons maintenant Uniq sur ce fichier et voyons ce qui se passe.

uniq file1

Ainsi, comme vous pouvez le voir, la sortie produite par la commande ne contient aucune ligne répétée. Veuillez noter que le fichier d'origine - 'file1' dans notre cas - reste inchangé. Vous pouvez rediriger la sortie de l'outil vers un autre fichier au cas où vous voudriez l'enregistrer et travailler dessus.

2. Comment afficher le nombre de répétitions pour chaque ligne

Si vous le souhaitez, vous pouvez également faire en sorte qu'uniq affiche en sortie le nombre de fois qu'une ligne est répétée. Cela peut être fait en utilisant le -c option de ligne de commande. Par exemple, la commande suivante :

uniq -c file1

produit la sortie suivante :

Ainsi, comme vous pouvez le voir, le nombre de répétitions pour chaque ligne est préfixé avant dans la sortie.

3. Comment imprimer uniquement les lignes en double avec uniq

Pour faire en sorte qu'uniq n'imprime que les lignes en double, utilisez le -D option de ligne de commande. Par exemple, supposons que file1 contienne maintenant une ligne supplémentaire en bas (notez que cette ligne n'est pas répétée).

Maintenant, lorsque j'exécute la commande suivante :

uniq -D file1

La sortie suivante est produite :

Comme vous pouvez le voir, l'option -D permet à uniq d'afficher toutes les lignes répétées en sortie, y compris toutes leurs répétitions. Pour mieux séparer, vous pouvez avoir une ligne vide après chaque groupe de lignes répétées, ce qui peut être fait en utilisant le --all-repeated option.

uniq --all-repeated[=METHOD] fichier1

Cette option nécessite la saisie d'un nom de méthode par l'utilisateur. Les valeurs pourraient être prepend (pour ajouter une ligne vide) ou séparer (pour ajouter une ligne vide). Par exemple, voici cette option en action avec prepend méthode.

Passons à autre chose, si vous souhaitez que l'outil n'affiche qu'une seule ligne en double par groupe, vous pouvez opter pour le -d option. En voici un exemple :

De toute évidence, une seule ligne répétée de chaque groupe était affichée dans la sortie.

4. Comment faire en sorte qu'uniq évite de comparer les premiers champs

Parfois, selon la situation, la similitude de deux lignes est définie par une petite partie de ces lignes. Par exemple, considérez le contenu du fichier suivant :

Maintenant, supposons que les lignes sont considérées comme similaires ou différentes en fonction de leur deuxième champ (HTF ou FF), et que vous souhaitez transmettre cela à uniq, cela peut être fait en utilisant le -f option de ligne de commande.

uniq -f [number-of-fields-to-skip] [file-name]

L'option -f vous oblige à transmettre un nombre qui représente le nombre de champs que vous souhaitez que la commande ignore. Par exemple, dans notre cas, nous pouvons passer '1' comme argument à -f car ce n'est que le premier champ que nous voulons qu'uniq ignore.

uniq -f 1 file1

La sortie montre clairement qu'uniq a considéré les première et troisième lignes comme répétées en fonction de leurs deuxièmes champs respectifs.

5. Comment faire en sorte qu'uniq affiche toutes les lignes, tout en séparant les groupes répétitifs avec une ligne vide

Dans le cas où l'exigence est d'afficher toutes les lignes, tout en séparant des groupes répétitifs de lignes avec une ligne vide, vous pouvez utiliser le --group option. Comme le --tout répété option dont nous avons parlé plus tôt, --group vous oblige également à indiquer la position de la ligne vide (prepend , ajouter , ou les deux ).

Voici un exemple :

Notez que l'option -f dont nous avons déjà parlé dans la section précédente.

6. Comment faire en sorte qu'uniq n'imprime que des lignes non répétitives

Comme vous l'avez compris maintenant, par défaut, la commande uniq n'affiche que les lignes répétées dans la sortie. Mais si vous le souhaitez, vous pouvez à la place faire en sorte qu'il n'affiche que des lignes non répétées ou uniques. Cela peut être fait en utilisant le -u option de ligne de commande.

uniq -u [file-name]

Donc, dans notre cas :

uniq -u fichier1

Voici un exemple :

Notez que l'option -f dont nous avons déjà parlé dans la section/point numéro 4.

7. Comment faire en sorte qu'uniq évite de comparer le nombre défini de caractères initiaux

Dans l'un de nos exemples précédents, nous avons expliqué comment vous pouvez faire en sorte qu'uniq saute des champs. Cependant, si vous le souhaitez, vous pouvez forcer l'outil à ignorer également un nombre défini de caractères initiaux. Cette fonctionnalité est accessible à l'aide du -s option de ligne de commande.

uniq -s [nombre de caractères] nom de fichier

Par exemple, supposons que le fichier contienne les lignes suivantes :

Maintenant, si vous voulez qu'uniq ignore les 4 premiers caractères de chaque ligne avant de comparer, cela peut être fait de la manière suivante :

uniq -s 4 fichier1

Voici la commande ci-dessus en action :

Vous pouvez donc voir que la quatrième ligne (faq_forge) qui s'y trouvait à l'origine a été ignorée dans la sortie. En effet, après avoir sauté les quatre premiers caractères, la troisième et la quatrième ligne étaient identiques et donc considérées comme répétées par uniq.

8. Comment limiter la comparaison pour définir le nombre de caractères

Semblable à la façon dont vous sautez des caractères, vous pouvez également demander à uniq de limiter la comparaison à un nombre défini de caractères. Pour cela, vous devrez utiliser le -w option de ligne de commande.

uniq -w [nombre-de-caractères] [nom-fichier]

Par exemple, supposons que le fichier contienne les lignes suivantes :

Maintenant, si l'exigence est de limiter la comparaison aux 3 premiers caractères, cela peut être fait de la manière suivante :

uniq -w 3 fichier1

Voici la commande ci-dessus en action :

Étant donné que les 3 premiers caractères des troisième et quatrième lignes sont identiques, ces lignes ont donc été considérées comme répétées. Par conséquent, seul le troisième est affiché dans la sortie.

9. Comment rendre la comparaison uniq insensible à la casse

Par défaut, la comparaison effectuée par uniq est sensible à la casse. Cependant, vous pouvez rendre le processus insensible à la casse en utilisant le -i option de ligne de commande.

Par exemple, considérons le même cas que celui dont nous avons parlé dans la section précédente, à savoir que la quatrième ligne commence par un H, un O et un W majuscules.

Maintenant, si vous essayez d'exécuter la même commande que celle que nous avons utilisée dans la section précédente, vous verrez que le résultat est différent :

C'est parce que les trois premiers caractères des troisième et quatrième lignes sont différents pour uniq en raison de leur casse. Dans ces situations, vous pouvez rendre la comparaison insensible à la casse à l'aide de l'option de ligne de commande -i.

10. Comment faire en sorte que la sortie uniq se termine par NUL

Par défaut, la sortie produite par uniq se termine par une nouvelle ligne. Cependant, si vous le souhaitez, vous pouvez avoir une sortie terminée par NUL à la place (utile pour traiter avec uniq dans les scripts). Cela peut être rendu possible en utilisant le -z option de ligne de commande.

uniq -z [nom-fichier]

Conclusion

Nous avons couvert à peu près toutes les options de ligne de commande offertes par la commande uniq, alors pratiquez tout ce dont nous avons discuté ici, et vous devriez avoir une bonne idée du fonctionnement d'uniq et des fonctionnalités qu'il offre. Comme toujours, en cas de question ou de doute, consultez d'abord la page de manuel de la commande.


Linux
  1. Tutoriel de commande cd Linux pour les débutants (8 exemples)

  2. Tutoriel de commande Linux comm pour les débutants (5 exemples)

  3. Tutoriel Linux Uniq Command pour débutants (10 exemples)

  4. Tutoriel de commande Linux df pour les débutants (8 exemples)

  5. Tutoriel de commande de date Linux pour les débutants (8 exemples)

Tutoriel Linux who Command pour débutants (8 exemples)

Tutoriel de commande Linux nl pour les débutants (7 exemples)

Tutoriel de commande Linux nm pour les débutants (10 exemples)

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)