Also wurde mir gesagt, ich solle last > lastloggedin
machen Dadurch wird eine Datei erstellt, die die letzte Anmeldung der Klasse seit dem letzten Systemneustart anzeigt, und jetzt werde ich aufgefordert, ein Awk-Skript mit dem Namen myawk
zu schreiben das zählt/bestimmt, wie viele Zeilen von lastloggedin
die Zeichenfolge CFS264
enthalten .
Ich habe grep -c CFS264 lastloggedin
ausgeführt
Akzeptierte Antwort:
Um Ihnen den Einstieg zu erleichtern, können Sie awk
verwenden um nach Zeilen in einer Datei zu suchen, die eine Zeichenfolge wie diese enthalten:
$ awk '/CFS264/ { .... }' lastloggedin
Die Bits in { .... }
sind die Befehle, die erforderlich sind, um die Anzahl der Zeilen mit dieser Zeichenfolge zu zählen. Um zu bestätigen, dass das obige funktioniert, können Sie einen print $0
verwenden darin, um einfach die Zeilen auszugeben, die die Suchzeichenfolge enthalten.
$ awk '/CFS264/ { print $0 }' lastloggedin
Was das Zählen angeht, wenn Sie nach „awk counter“ suchen, stoßen Sie auf diese SO Q&A mit dem Titel:using awk to count no of records. Die dort gezeigte Methode würde für das, was Sie beschreiben, ausreichen:
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
Beispiel
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
HINWEIS: Sie sagen im last
nicht, zu welchem Feld CFS264 gehört Ausgang. Angenommen, es handelt sich um einen Benutzernamen, dann könnten Sie den awk
weiter einschränken Befehl, nur dieses Feld wie folgt zu durchsuchen:
$ awk '$1=="CFS264" { print $0 }' lastloggedin