Vous pouvez utiliser awk pour cette tâche :
awk -F: '$3 >= 1000' /etc/passwd
Cela divisera le /etc/passwd fichier par deux-points, alors si le champ 3 (userid) est supérieur ou égal à 1000, il imprimera le /etc/passwd entier enregistrer.
Si vous souhaitez extraire uniquement le nom d'utilisateur de cette liste, procédez comme suit :
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
Où $1 est le premier champ de etc/passwd qui est le nom d'utilisateur.
En supposant que le système ne reconnaisse que les utilisateurs locaux (c'est-à-dire ceux enregistrés en /etc/passwd , par opposition à tout authentifié via un service distant tel que LDAP, NIS ou Winbind), vous pouvez utiliser grep , sed , ou awk pour extraire les données de /etc/passwd . awk est le plus flexible de ceux-ci, mais que diriez-vous d'une solution avec sed :
sed -n '/^\([^:]\+\):[^:]\+:[1-9][0-9]\{3\}/ { s/:.*//; p }' /etc/passwd
Vous devez obtenir tous les utilisateurs dont le gid est supérieur ou égal à 1000. Utilisez cette commande pour cela :
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Si vous voulez des utilisateurs système (gid<1000), ce sera :
awk -F: '($3<1000){print $1}' /etc/passwd