Awk, чтобы получить всех моих постоянных пользователей в тени

8

У меня есть сценарий.

Я хочу получить всех моих постоянных пользователей, /etc/shadowнапример, всех пользователей, у которых второй термин в теневом файле начинается с $или !$.

Мой шаблон

sudo getent shadow | awk -F: '$2 ~ /^$/ || /^!$/ {print $1}'

Это не работает на данный момент.

danaso
источник
это должен быть awk? :-)
Rinzwind

Ответы:

11

Вы должны избегать $, так как это специальный символ для «Конца строки», очень похожий ^на «Начало строки».

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
источник
+1 хороший улов :)
Rinzwind
Спасибо, это работает. Мне просто нужно не включать пользователя root
danaso
1
Упрощено: awk -F: '$2 ~ /^!?\$/ {print $1}'- Это объединяет два теста на совпадение и говорит: «совпадать со знаком доллара в начале поля, необязательно ( ?) с предшествующим !
символом
4

Все пользователи с установленным паролем могут быть перечислены следующим образом:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Rinzwind
источник