
我剛開始學習 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
以刪除重複項。