CommencerCommencer gratuitement

Comment supprimer les lignes en doublon ?

Une autre commande souvent utilisée avec sort est uniq, dont le rôle est de supprimer les lignes en doublon. Plus précisément, elle supprime les lignes adjacentes en doublon. Si un fichier contient :

2017-07-03
2017-07-03
2017-08-03
2017-08-03

la commande uniq produira :

2017-07-03
2017-08-03

mais s’il contient :

2017-07-03
2017-08-03
2017-07-03
2017-08-03

alors uniq affichera les quatre lignes. En effet, uniq est conçu pour travailler avec de très gros fichiers. Pour supprimer les lignes en doublon non adjacentes d’un fichier, il devrait garder tout le fichier en mémoire (ou au moins, toutes les lignes uniques observées jusqu’à présent). En ne supprimant que les doublons adjacents, il doit seulement garder en mémoire la ligne unique la plus récente.

Cet exercice fait partie du cours

Introduction au shell

Afficher le cours

Instructions

Ecrivez un pipeline pour :

  • obtenir la deuxième colonne de seasonal/winter.csv,
  • supprimer le mot « Tooth » de la sortie afin que seuls les noms des dents s’affichent,
  • trier les résultats de manière à ce que toutes les occurrences d’un nom de dent particulier soient adjacentes, et
  • afficher une seule fois le nom de chaque dent ainsi que son nombre d’occurrences.

Le début de votre pipeline est le même que celui de l’exercice précédent :

cut -d , -f 2 seasonal/winter.csv | grep -v Tooth

Étendez-le avec une commande sort et utilisez uniq -c pour afficher les lignes uniques avec leur nombre d’occurrences plutôt que d’utiliser uniq et wc.

Exercice interactif pratique

Passez de la théorie à la pratique avec l’un de nos exercices interactifs

Commencer l’exercice