
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 who
se 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 awk
produciría:
user1
user1
aperson
Puede canalizar la salida de awk
into sort -u
para eliminar duplicados.