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