1. Learn
  2. /
  3. Courses
  4. /
  5. Introduction à l'invite de commande

Connected

Exercise

Comment puis-je enlever les lignes en double ?

Une autre commande souvent utilisée avec sort est uniq, dont le rôle est d'enlever les lignes dupliquées. Plus précisément, elle enlève les lignes en double qui sont adjacentes. Si un fichier contient :

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

alors 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. La raison est que uniq est conçu pour fonctionner avec des fichiers très volumineux. Pour enlever des lignes non adjacentes d'un fichier, il devrait garder tout le fichier en mémoire (ou du moins toutes les lignes uniques vues jusqu'à présent). En ne retirant que les doublons adjacents, il n'a qu'à conserver en mémoire la ligne unique la plus récente.

Instructions

100 XP

Écrivez un enchaînement de commandes pour :

  • extraire la deuxième colonne de seasonal/winter.csv,
  • enlever le mot « Tooth » de la sortie afin que seuls les noms de dents soient affichés,
  • trier la sortie de façon à regrouper toutes les occurrences d'un même nom de dent ; et
  • afficher chaque nom de dent une seule fois avec le nombre de fois où il apparaît.

Le début de votre tuyauterie est le même que dans l'exercice précédent :

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

Complétez-la avec une commande sort, et utilisez uniq -c pour afficher les lignes uniques avec un compteur du nombre d'occurrences de chacune, plutôt que d'utiliser uniq et wc.