我正在努力计算 wtmp 文件中的唯一用户。
这是我到目前为止所拥有的:
uniqueUsers=$(last | uniq -c | wc -l)
echo "There were '$uniqueUsers' unique users logged on"
任何帮助是极大的赞赏!
答案1
该last
命令给出多列输出;您应该仅提取第一列(使用awk
或cut
),并对数据进行排序,以便uniq
可以完成其工作。同时使用uniq -c
和wc -l
是多余的(选择一个):
uniqueUsers=$(last |cut -f1 -d ' ' | grep -v -e '^\(\|reboot\|wtmp\)$' |sort -u | wc -l)
答案2
我的刺,短一点(因为我更喜欢 awk 而不是 cut):
uniqueUsers=$(last | awk '{ print $1 }' | sort -u | grep -vE 'reboot|wtmp|^$'| wc -l)
答案3
忽略空行、wtmp 并重新启动。
last | awk '!a[$1]++&&$1!~/reboot|wtmp|^$/' | wc -l