
Я только что начал изучать курс по 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
удалить дубликаты.