LINUX.ORG.RU

команда на shell'e


0

0

на выходе команды shella список юзеров:
user1
user2
user3
как мне профильтровать этот список и оставить в нем только пользователей, у которых в файле passwd не указан атрибут nologin?
Подозреваю, что нужен grep. Но как использовать не разберусь..

Ответ на: комментарий от AITap

Так я получу список пользователей без атрибута nologin. это то ясно Вопрос в том, как сделать пересечение этих двух списков, чтобы остались только те пользователи, которые и в том и другом списке

VitalySM
() автор топика
Ответ на: комментарий от VitalySM

Понял.
Что-то вроде:

list-users.sh | while read user
do
grep $user /etc/passwd | grep -v nologin | cut -d : -f 1
done

AITap ★★★★★
()
Ответ на: комментарий от VitalySM

чтобы сделать пересечение file1 и file2 можно сделать так:

{ cat file1 | sort -u; cat file2 | sort -u; } | sort | awk 'prev == $0 { print prev } { prev=$0 }'

dilmah ★★★★★
()

Вот ваша кнопка

#!/usr/bin/gawk

BEGIN {
    while(1) {
        getline < "/etc/passwd"
        if(s == $0) break
        s = $0
        users[substr($0, 0, index($0, ":") - 1)] = (index($0, "nologin") == 0)
    }
    close("/etc/passwd")
}

{ if(users[$0]) print }


Использовать так:

your-command-here | gawk -f that-script-above.awk

proud_anon ★★★★★
()
Ответ на: комментарий от Sectoid

/me too

А потом говорят, что в юниксе нет секретов...

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.