Bylo mi tedy řečeno, abych udělal last > lastloggedin který vytvoří soubor, který ukazuje poslední přihlášení tříd od posledního restartu systému, a nyní jsem požádán, abych napsal skript Awk, který se jmenuje myawk který počítá/určuje, kolik řádků lastloggedin obsahovat řetězec CFS264 .
Provedl jsem grep -c CFS264 lastloggedin
Přijatá odpověď:
Chcete-li začít, můžete použít awk pro vyhledání řádků v souboru, který obsahuje řetězec jako je tento:
$ awk '/CFS264/ { .... }' lastloggedin
Bity v { .... } budou příkazy potřebné k sečtení počtu řádků s tímto řetězcem. Pro potvrzení, že výše uvedené funguje, můžete použít print $0 tam jednoduše vytisknete ty řádky, které obsahují hledaný řetězec.
$ awk '/CFS264/ { print $0 }' lastloggedin
Pokud jde o počítání, pokud hledáte „awk counter“, narazíte na tento SO Q&A s názvem:pomocí awk počítejte žádné záznamy. Pro to, co popisujete, by stačila metoda, která je zde uvedena:
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
Příklad
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
POZNÁMKA: V last neuvádíte, ke kterému poli CFS264 patří výstup. Za předpokladu, že se jedná o uživatelské jméno, můžete awk dále omezit příkaz k vyhledání pouze tohoto pole takto:
$ awk '$1=="CFS264" { print $0 }' lastloggedin