それで、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"
。