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