8文字未満のユーザー名を検索するヘルプコマンド

8文字未満のユーザー名を検索するヘルプコマンド

私はちょうどLinuxコースを聞き始め、宿題をしています。

ユーザー名が8文字未満のログインユーザーのユーザー名を見つける必要があります。これは私が試したコマンドですが、うまくいきません。誰かが私が間違っていることを教えてもらえますか?

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

以下のコマンドは8桁のユーザー名を返します。 (テストしてみた結果正しく動作します。)

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

答え1

を使用することに限定されない場合は、各行をスペースで区切られた列に自然に分割し、最初の列に8文字未満の行を含める必要があることをお勧めしますgrepawk

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出力をパイプで接続してsort -u重複を排除できます。

関連情報