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
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
