Bases de Linux et de la ligne de commande
$ cat ips.txt
10.0.0.5
10.0.0.9
10.0.0.9
10.0.0.5
10.0.0.2
10.0.0.5
$ sort ips.txt | uniq -c | sort -nr | head -n 1Les choix sont donnés sans les espaces en début de ligne. Dans la session ci-dessus, quelle ligne affiche le dernier enchaînement de commandes ?
- A1 10.0.0.2
- B2 10.0.0.9
- C3 10.0.0.5
Afficher la réponse et l'explication
Réponse : C. 3 10.0.0.5
sort trie les lignes de sorte que les lignes identiques soient adjacentes, et uniq -c fusionne les lignes identiques adjacentes en ajoutant leur nombre, ce qui donne les trois lignes 3 10.0.0.5, 2 10.0.0.9 et 1 10.0.0.2. sort -nr trie selon le nombre en tête, par ordre décroissant, et head -n 1 prend la première ligne : la sortie est donc 3 10.0.0.5. uniq ne fusionne que les lignes identiques « adjacentes » : il est donc indispensable de trier d'abord. Enchaîner ainsi des commandes avec des pipes est une méthode classique pour compter, dans un journal, les adresses IP qui accèdent le plus souvent ou les erreurs les plus fréquentes.
Continuer : 9 autres questions sur Bases de Linux et de la ligne de commande