![我怎样才能让'last -n'只返回n行用户?](https://linux22.com/image/141608/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9'last%20-n'%E5%8F%AA%E8%BF%94%E5%9B%9En%E8%A1%8C%E7%94%A8%E6%88%B7%EF%BC%9F.png)
我写了这个简单的 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