每个用户最近 5 次登录 Linux

每个用户最近 5 次登录 Linux

所以我试图使用 bash 脚本获取所有用户的 X 次最后登录,但有谁知道如何准确地仅提取日期,以便我可以在某种表中创建一组?使用最后我得到这样的输出:

yogi     pts/0        192.168.0.103    Fri Nov 18 07:04 - 07:05  (00:00)
yogi     pts/1        10.8.3.6         Thu Nov 17 14:36 - 16:53  (02:17)
yogi     pts/0        10.8.3.6         Thu Nov 17 14:32 - 16:45  (02:12)

因此,使用 awk '{print $1, $4, $5, $6,}' 我只能走那么远,但是否可以得到这样的东西:

name surname login date1 date2 date3 date4 etc.

我现在为此绞尽脑汁;/

答案1

在 Gnu awk 中:

$ cat program.awk
NR==FNR {
    split($5,a,",")
    b[$1]=a[1]
    next
} 
($1 in b) && ++c[$1]<=5 {
    d[$1]=d[$1] $4 " " $5 " " $6 (c[$1]==5?"":OFS)
} 
END {
    for (i in d) 
        print b[i], i, d[i]
}

运行:

awk -f program.awk OFS=", " FS=":" /etc/passwd FS=" +" <(last)
James Brown, james, Sat Nov 19, Wed Nov 16, Tue Nov 15, Mon Nov 14, Sun Nov 13

因为我在笔记本电脑上,所以这是一个坏例子。输出的顺序是 Gnu awk 默认的,即。随机的。如果需要,可以更改遍历顺序PROCINFO["sorted_in"]="@ind_str_asc"

相关内容