On m'a donc dit de faire last > lastloggedin
qui crée un fichier qui montre la dernière connexion des classes depuis le dernier redémarrage du système, et maintenant on me demande d'écrire un script Awk nommé myawk
qui compte/détermine le nombre de lignes de lastloggedin
contenir la chaîne CFS264
.
J'ai fait grep -c CFS264 lastloggedin
Réponse acceptée :
Pour commencer, vous pouvez utiliser awk
pour rechercher des lignes dans un fichier contenant une chaîne comme suit :
$ awk '/CFS264/ { .... }' lastloggedin
Les bits dans le { .... }
seront les commandes nécessaires pour compter le nombre de lignes avec cette chaîne. Pour confirmer que ce qui précède fonctionne, vous pouvez utiliser un print $0
là pour imprimer simplement les lignes qui contiennent la chaîne de recherche.
$ awk '/CFS264/ { print $0 }' lastloggedin
En ce qui concerne le comptage, si vous recherchez "awk counter", vous tomberez sur cette SO Q&A intitulée :utiliser awk pour compter aucun enregistrement. La méthode montrée ici suffirait pour ce que vous décrivez :
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
Exemple
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
REMARQUE : Vous ne dites pas à quel champ CFS264 se rapporte dans le last
production. En supposant qu'il s'agisse d'un nom d'utilisateur, vous pouvez restreindre davantage le awk
commande pour rechercher uniquement ce champ comme ceci :
$ awk '$1=="CFS264" { print $0 }' lastloggedin