如何列出不重复的登录用户?

如何列出不重复的登录用户?

who命令可用于查找已登录的用户,但如果有多个 shell 正在运行,它会打印重复的值。如何获取当前登录的用户列表而不包含重复项?

答案1

我们可以通过管道将输出输出whoawk只打印第一个细胞每个记录(行),然后将其通过管道传输到命令sort,该命令将按字母顺序对值进行排序,并且仅输出唯一的-u条目:

who | awk '{print $1}' | sort -u

或者我们只能awk使用这边走

who | awk '!seen[$1]++ {print $1}'

符合 POSIX 的解决方案,由@甜点-cut将使用空格作为分隔符-d' ',并且仅打印每条记录的第一个字段-f1

who | cut -d' ' -f1 | sort -u

谢谢@DavidFoerster这里有更短的语法,不会丢失所有其他列的信息:

who | sort -u -k 1,1

w出于同样的目的,我们可以使用带有选项(忽略标题)的命令-h,例如:

w -h | awk '!seen[$1]++ {print $1}'

我们还可以使用该命令与带有转置选项的users命令(重塑数据)相结合,然后再次:rs-Tsort -u

users | rs -T | sort -u

我们可以按照以下方式使用和who -q转置 - 其中命令head -1将仅裁剪前一个命令输出的第一行:

who -q | head -1 | rs -T | sort -u

也可以看看:

相关内容