
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 awk
produziria:
user1
user1
aperson
awk
Você pode canalizar a saída sort -u
para remover duplicatas.