Options avancées de uniq et applications pratiques
Maintenant que vous comprenez l'utilisation de base de uniq
et comment la combiner avec sort
, explorons quelques options supplémentaires de la commande uniq
qui la rendent encore plus puissante pour les tâches de traitement de données.
Compter les occurrences avec -c
L'option -c
compte le nombre d'occurrences de chaque ligne. Cela est utile lorsque vous voulez savoir combien de fois chaque ligne unique apparaît dans votre fichier :
sort ~/project/duel_log.txt | uniq -c
Vous devriez voir une sortie comme celle-ci :
2 potion
2 shield
2 sword
Cela montre que chaque élément apparaît deux fois dans notre fichier original.
Trouver seulement les lignes en double avec -d
Si vous n'êtes intéressé que par la recherche des lignes en double (les lignes qui apparaissent plus d'une fois), vous pouvez utiliser l'option -d
:
sort ~/project/duel_log.txt | uniq -d
Sortie :
potion
shield
sword
Étant donné que tous les éléments de notre fichier ont des doublons, tous sont listés dans la sortie.
Créer un fichier avec seulement des entrées uniques
Créons un nouveau fichier avec un contenu plus varié pour mieux démontrer la commande uniq
:
echo -e "apple\napple\napple\nbanana\ncherry\ncherry\ngrape" > ~/project/fruits.txt
Examinons ce fichier :
cat ~/project/fruits.txt
Sortie :
apple
apple
apple
banana
cherry
cherry
grape
Maintenant, utilisons l'option -u
pour trouver les entrées qui apparaissent exactement une fois :
sort ~/project/fruits.txt | uniq -u
Sortie :
banana
grape
Cela montre que "banana" et "grape" apparaissent seulement une fois dans notre fichier.
Application dans le monde réel : Analyse de journaux (logs)
Créons un simple fichier de journal pour simuler une application dans le monde réel :
echo -e "INFO: System started\nERROR: Connection failed\nINFO: User logged in\nWARNING: Low memory\nERROR: Connection failed\nINFO: System started" > ~/project/system.log
Maintenant, analysons ce fichier de journal pour savoir quels types de messages apparaissent et combien de fois :
cat ~/project/system.log | sort | uniq -c
La sortie devrait être similaire à :
2 ERROR: Connection failed
2 INFO: System started
1 INFO: User logged in
1 WARNING: Low memory
Cela vous donne un aperçu rapide des types d'événements dans votre fichier de journal et de leur fréquence.
Vous pouvez également extraire seulement les types de messages (INFO, ERROR, WARNING) en utilisant la commande cut
:
cat ~/project/system.log | cut -d: -f1 | sort | uniq -c
Sortie :
2 ERROR
3 INFO
1 WARNING
Cette analyse montre que sur 6 entrées de journal, 3 sont des messages INFO, 2 sont des messages ERROR et 1 est un message WARNING.
Ces exemples démontrent comment combiner des commandes simples comme sort
, uniq
et cut
peut créer des pipelines de traitement de données puissants sous Linux.