uniq (unique)
100%

Text-Fu · Leçon 14

uniq (unique)

Apprenez à regrouper, compter ou filtrer les groupes adjacents de lignes identiques avec uniq.

uniq compare chaque ligne à la précédente. Il peut regrouper, compter ou sélectionner des séries adjacentes identiques, mais ne cherche pas les doublons séparés dans tout le fichier.

Regrouper les lignes dupliquées adjacentes

Si reading.txt contient :

book
book
paper
paper
article
article
magazine
$ uniq reading.txt
book
paper
article
magazine

Une ligne représentative est produite par groupe adjacent. Le fichier d'entrée reste inchangé.

Que fait uniq reading.txt par défaut ?

Compter les groupes adjacents

$ uniq -c reading.txt
      2 book
      2 paper
      2 article
      1 magazine

Ces nombres sont les longueurs des séries, pas des totaux globaux, sauf si les lignes égales ont été regroupées au préalable.

Que représente le nombre produit par uniq -c ?

Sélectionner les groupes uniques ou répétés

$ uniq -u reading.txt
magazine

Utilisez -d pour afficher un représentant de chaque groupe répété :

$ uniq -d reading.txt
book
paper
article

-u ne garde que les groupes d'une ligne. -d émet une ligne par groupe répété ; GNU uniq -D émet toutes les lignes de ces groupes.

Quelle commande affiche seulement les groupes adjacents présents exactement une fois ?

Quelle commande affiche une ligne par groupe adjacent présent plusieurs fois ?

Regrouper les doublons séparés

Si les valeurs égales ne sont pas voisines, elles forment des groupes distincts :

book
paper
book
paper
article
magazine
article

Sur ce fichier, aucune ligne n'est regroupée puisque les voisines diffèrent :

$ uniq reading.txt
book
paper
book
paper
article
magazine
article

Lorsque l'ordre peut changer, triez d'abord :

$ sort reading.txt | uniq
article
book
magazine
paper

Employez une locale et une politique de comparaison cohérentes. sort -u reading.txt peut aussi trier et ne garder qu'une ligne par clé égale.

Des lignes égales sont dispersées dans reading.txt et l'ordre peut changer. Quel pipeline produit une copie triée de chaque ligne distincte ?

Sans fichier, uniq lit stdin. GNU propose aussi -i pour ignorer la casse, et -f, -s, -w pour limiter la région comparée.

Leçon terminée

Vous avez terminé uniq (unique)

Vous savez analyser les groupes adjacents de lignes égales avec uniq.

  • Réduire chaque groupe adjacent à une ligne.

  • Compter les occurrences consécutives avec -c.

  • Choisir les groupes unitaires avec -u.

  • Choisir les groupes répétés avec -d ou GNU -D.

  • Trier d'abord pour regrouper les doublons séparés.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu