帮助命令查找少于 8 个字符的用户名

帮助命令查找少于 8 个字符的用户名

我刚刚开始学习 Linux 课程,并且一直在做我的作业。

我需要查找用户名少于 8 个字符的登录用户的用户名。这是我尝试过的命令,但它不起作用。有人可以告诉我我可能做错了什么吗?

who | grep '[a-zA-Z0-9]\{1,7\}'

下面的命令返回 8 个字符的用户名(我已经测试过并且它有效)

who | grep '[a-zA-Z0-9]\{8\}'

答案1

如果您不限于使用grep,那么我建议使用awk,它自然地将每一行分成以空格分隔的列,然后要求第一列包含少于八个字符的行:

who | awk 'length($1) < 8 {print $1}'

给出的输出who如下所示:

user1      pts/1        2019-11-24 16:31 (host1.example.com)
user1      pts/2        2019-11-24 16:31 (host1.example.com)
deadbeef   pts/3        2019-11-24 20:39 (host2.example.com)
aperson    pts/4        2019-11-24 20:39 (host3.example.com)
igotroot   pts/5        2019-11-24 20:39 (host4.example.com)

上述awk命令将产生:

user1
user1
aperson

awk您可以将into的输出通过管道传输sort -u以删除重复项。

相关内容