使用 egrep 排除系统用户

exclude system users using egrep

我尝试排除所有系统用户并尝试在 Solaris 10 中获取真实用户列表。我都试过了:

 egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd" /etc/passwd

cat /etc/passwd | egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd"

但两者都产生了空输出。 (没有错误信息)。那么正确的做法是什么?

问题是 passwd 条目包含一个 shell 字段,通常看起来像 /bin/sh/usr/bin/bash 等。您包含了序列 bin 在您的排除列表中(尝试排除 bin 用户)并且它排除了每个条目。

尝试限制过滤,例如要求匹配从行首开始:

egrep -v "^(root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd)" /etc/passwd