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