Ajuda com comando para encontrar nome de usuário com menos de 8 caracteres

Ajuda com comando para encontrar nome de usuário com menos de 8 caracteres

Acabei de começar a fazer um curso de Linux e estou preso na minha tarefa.

Preciso encontrar os nomes de usuário de usuários logados com nomes de usuário com menos de 8 caracteres. Aqui está o comando que tentei, mas não está funcionando. Alguém poderia informar o que posso ter feito incorretamente?

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

O comando a seguir aqui retorna nomes de usuários de 8 caracteres (eu testei e funciona)

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

Responder1

Se você não estiver restrito a usar grep, sugiro usar awk, que naturalmente divide cada linha em colunas delimitadas por espaços em branco e, em seguida, solicita linhas nas quais a primeira coluna contém menos de oito caracteres:

who | awk 'length($1) < 8 {print $1}'

A saída obtida whoé assim:

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)

O comando acima awkproduziria:

user1
user1
aperson

awkVocê pode canalizar a saída sort -upara remover duplicatas.

informação relacionada