각 사용자의 최근 Linux 로그인 5회

각 사용자의 최근 Linux 로그인 5회

그래서 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".

관련 정보