我怎样才能让'last -n'只返回n行用户?

我怎样才能让'last -n'只返回n行用户?

我写了这个简单的 awk 程序:

last -n 10 | awk'{print "username: " $1}'

当我得到以下输出时,我感到很惊讶:

> username: someUsername1
> username: someUsername2
> username: someUsername3
> ...
> username: someUsername10
> username: 
> username: wtmp

使用last -n 10 | wc -l我了解到该last命令返回的行比我给它的数字多了两行(输出是12

我检查了一下man last,没有找到任何关于这两条额外的线或如何摆脱它们的信息。

那些空白行和“wtmp”行是什么?我怎么能忽略它们呢? (也许在 awk 的一边?)

谢谢!

答案1

一个通用的解决方案在任何地方都适用,并且当登录数据库中的条目少于十个时,可以修剪最后两行:

last -n 10 | head -n -2 | awk'{print "username: " $1}'

最新版本util-linux(2.30.2 及更高版本)允许wtmp删除该行:

last -n 10 --time-format=notime | awk'{print "username: " $1}'

答案2

如果我在没有任何参数的情况下最后运行,我会得到以下输出:

wtmp begins Fri Sep 22 18:15:02 2017

前面还有一个空行。这是记录登录的日期。

你可以使用 head 来摆脱这个问题。

last | head -n10

相关内容