我刚刚开始学习 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
以删除重复项。