Quindi mi è stato detto di fare last > lastloggedin
che crea un file che mostra l'ultimo accesso delle classi dall'ultimo riavvio del sistema, e ora mi viene chiesto di scrivere uno script Awk che si chiama myawk
che conta/determina quante righe di lastloggedin
contengono la stringa CFS264
.
Ho eseguito grep -c CFS264 lastloggedin
Risposta accettata:
Per iniziare puoi usare awk
per cercare le righe in un file che contengono una stringa in questo modo:
$ awk '/CFS264/ { .... }' lastloggedin
I bit nel { .... }
saranno i comandi richiesti per calcolare il numero di righe con quella stringa. Per confermare che quanto sopra funziona puoi usare un print $0
lì per stampare semplicemente quelle righe che contengono la stringa di ricerca.
$ awk '/CFS264/ { print $0 }' lastloggedin
Per quanto riguarda il conteggio, se cerchi "awk counter" ti imbatterai in questo SO Q&A intitolato:using awk per contare il numero di record. Il metodo mostrato lì sarebbe sufficiente per quello che descrivi:
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
Esempio
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
NOTA: Non dici a quale campo appartiene CFS264 in last
produzione. Supponendo che sia un nome utente, puoi limitare ulteriormente il awk
comando per cercare solo quel campo in questo modo:
$ awk '$1=="CFS264" { print $0 }' lastloggedin