Also wurde mir gesagt, dass ich last > lastloggedin
eine Datei erstellen soll, die die letzte Anmeldung der Klasse seit dem letzten Systemneustart anzeigt, und jetzt werde ich gebeten, ein Awk-Skript mit dem Namen zu schreiben myawk
, das zählt / bestimmt, wie viele Zeilen lastloggedin
die Zeichenfolge enthalten CFS264
.
Ich habe es getan grep -c CFS264 lastloggedin
text-processing
awk
scripting
TayshaunS
quelle
quelle
awk
? Wenn nicht, könnten Sie einfach verwendengrep -c CFS264 lastloggedin | wc -l
.grep -c (something) (something) | wc -l
wird immer "1" erzeugen.Antworten:
Um Ihnen den Einstieg zu erleichtern, können Sie
awk
in einer Datei nach Zeilen suchen, die eine Zeichenfolge wie folgt enthalten:Die Bits in
{ .... }
sind die Befehle, die erforderlich sind, um die Anzahl der Zeilen mit dieser Zeichenfolge zu ermitteln. Um zu bestätigen, dass das oben genannte funktioniert, können Sie einprint $0
In verwenden, um einfach die Zeilen zu drucken, die die Suchzeichenfolge enthalten.Wenn Sie nach "awk counter" suchen, werden Sie auf diese SO-Frage und Antwort stoßen : Verwenden Sie awk, um keine Datensätze zu zählen . Die dort gezeigte Methode würde für das, was Sie beschreiben, ausreichen:
Beispiel
HINWEIS: Sie sagen nicht, zu welchem Feld CFS264 in der
last
Ausgabe gehört. Angenommen, es ist ein Benutzername, dann könnten Sie denawk
Befehl weiter einschränken , um nur dieses Feld wie folgt zu durchsuchen:quelle
awk
.Das folgende Beispiel zählt die Zeiten, in denen ich erwähnt werde, ohne die
lastloggedin
Datei zu benötigen :Wenn Sie darauf bestehen, die
lastloggedin
Datei zu verwenden, oder gezwungen sind, sie zu verwenden , können Sie dies folgendermaßen tun:Verwenden Sie
$1~/some_chars/
diese Option , um alle Benutzernamen abzurufen, die die angegebenen Zeichen enthalten, oder$1~/^prefix/
um nur Namen abzugleichen, die mitprefix
: beginnen.PS:
Nach
man awk
weiteren Hinweisen suchen ... ;-)awk
ist sehr lohnend: Sie können nach sehr kurzer Zeit viel lernen ...quelle
Letzte Dose enthält Benutzeranmeldungen von früheren Neustarts. Daher werden im Folgenden nur Benutzer seit dem letzten Neustart gedruckt:
Der erste Teil des Befehls awk gibt einen Bereich an - beginnen Sie in der ersten Zeile, bis die erste Spalte "Neustart" lautet.
quelle