Помогите с командой для поиска имени пользователя, содержащего менее 8 символов

Помогите с командой для поиска имени пользователя, содержащего менее 8 символов

Я только что начал изучать курс по Linux и застрял с заданием.

Мне нужно найти имена пользователей, вошедших в систему, с именами пользователей, длина которых меньше 8 символов. Вот команда, которую я попробовал, но она не работает. Может кто-нибудь подскажет, что я мог сделать неправильно?

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

Следующая команда возвращает 8-символьные имена пользователей (я проверил, и это работает)

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

решение1

Если вы не ограничены использованием grep, то я бы предложил использовать awk, который естественным образом разбивает каждую строку на столбцы, разделенные пробелами, а затем запрашивает строки, в которых первый столбец содержит менее восьми символов:

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удалить дубликаты.

Связанный контент