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

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

Linux コースを受講し始めたばかりですが、課題に行き詰まっています。

ユーザー名が 8 文字未満のログイン ユーザーのユーザー名を見つける必要があります。試したコマンドは次のとおりですが、機能しません。何を間違えたのか、どなたかアドバイスをいただけませんか?

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

次のコマンドは 8 文字のユーザー名を返します (テスト済みで動作します)

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

答え1

の使用に制限がない場合はgrep、 を使用することをお勧めします。awkこれにより、各行が空白で区切られた列に自然に分割され、最初の列に含まれる文字数が 8 文字未満の行が要求されます。

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を削除することができます。

関連情報