Для начала вы можете использовать awk
поиск строк в файле, который содержит строку, например:
$ awk '/CFS264/ { .... }' lastloggedin
Биты в { .... }
будут командами, необходимыми для подсчета количества строк с этой строкой. Чтобы подтвердить, что вышеприведенное работает, вы можете использовать print $0
там, чтобы просто напечатать те строки, которые содержат строку поиска.
$ awk '/CFS264/ { print $0 }' lastloggedin
Что касается подсчета, если вы будете искать «счетчик awk», вы наткнетесь на это SO Q & A под названием: использование awk для подсчета количества записей . Показанного там метода будет достаточно для того, что вы описываете:
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
пример
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
ПРИМЕЧАНИЕ. Вы не говорите, какое поле CFS264 относится к last
выводу. Предполагая, что это имя пользователя, вы можете дополнительно ограничить awk
команду для поиска только в этом поле следующим образом:
$ awk '$1=="CFS264" { print $0 }' lastloggedin
awk
? Если нет, вы можете просто использоватьgrep -c CFS264 lastloggedin | wc -l
.