Answers:
首先,您可以使用awk
以下命令在文件中搜索包含以下字符串的行:
$ awk '/CFS264/ { .... }' lastloggedin
中的位{ .... }
将是计算该字符串的行数所需的命令。要确认上述方法是否有效,您可以print $0
在其中使用来简单地打印出包含搜索字符串的行。
$ awk '/CFS264/ { print $0 }' lastloggedin
至于计数,如果您搜索“ awk counter”,您将偶然发现标题为:使用awk计数记录数的 SO Q&A 。此处显示的方法足以满足您的描述:
$ 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
注意:您不会在last
输出中说出CFS264属于哪个字段。假设它是一个用户名,那么您可以进一步将awk
命令限制为仅搜索该字段,如下所示:
$ awk '$1=="CFS264" { print $0 }' lastloggedin
awk
。
以下示例计算了不需要lastloggedin
文件时我被提及的时间:
$ last | awk '$1=="yeti" { ++count } END { print count }'
106
如果您坚持使用或被迫使用该lastloggedin
文件,则可以通过以下方式进行操作:
$ last > lastloggedin
$ awk '$1=="yeti" { ++count } END { print count }' lastloggedin
106
使用$1~/some_chars/
获得的所有用户名containig给定的字符或$1~/^prefix/
只匹配字符开头的名称prefix
:
$ last | awk '$1~/et/ { ++count } END { print count }'
106
$ last | awk '$1~/^ye/ { ++count } END { print count }'
106
扫描man awk
更多提示... ;-)
awk
非常有益:学习很短的时间后,您可以做很多事情...
awk
吗?如果没有,您可以使用grep -c CFS264 lastloggedin | wc -l
。