各ユーザーの最近の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"

おすすめ記事