Bash 使用egrep排除系统用户

Bash 使用egrep排除系统用户,bash,grep,solaris,Bash,Grep,Solaris,我尝试排除所有系统用户,并尝试在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 及 但两者都产生了空输出。(没有错误消息)。那么正确的方法是什么呢?问题是passwd条目包括一个shell字段,它通常看

我尝试排除所有系统用户,并尝试在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


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

问题是
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
egrep -v "^(root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd)" /etc/passwd