Ayuda con el comando para encontrar un nombre de usuario con menos de 8 caracteres

Ayuda con el comando para encontrar un nombre de usuario con menos de 8 caracteres

Acabo de empezar a tomar un curso de Linux y estoy estancado en mi tarea.

Necesito encontrar los nombres de usuario de los usuarios que iniciaron sesión con nombres de usuario de menos de 8 caracteres. Aquí está el comando que he probado pero no funciona. ¿Alguien podría informarme de lo que pude haber hecho incorrectamente?

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

El siguiente comando aquí devuelve nombres de usuario de 8 caracteres (lo he probado y funciona)

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

Respuesta1

Si no está restringido a usar grep, le sugeriría usar awk, que naturalmente divide cada línea en columnas delimitadas por espacios en blanco y luego solicita filas en las que la primera columna contenga menos de ocho caracteres:

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

El resultado dado whose ve así:

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)

El comando anterior awkproduciría:

user1
user1
aperson

Puede canalizar la salida de awkinto sort -upara eliminar duplicados.

información relacionada