Com base em gid , os usuários do sistema e os usuários do serviço podem ser separados da seguinte forma,
/etc/passwd contém uma lista para todos os usuários junto com outras informações. Usuários de serviço ou usuários reais têm gid maior que ou igual a 1000. Assim, uma lista de usuários reais pode ser obtida como
awk -F: '(>=1000)&&(!="nobody"){print }' /etc/passwd
Além disso, uma lista de usuários do sistema ( gid & lt; 1000) pode ser extraída como
awk -F: '(<1000){print }' /etc/passwd
Como funciona
O conteúdo de /etc/passwd é como
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Ao usar awk com -F: , ele divide o conteúdo de uma linha em vários campos, tratando : como separador de campo. O primeiro campo contém o nome do usuário e o terceiro campo tem o gid .
Por isso, para extrair usuários reais awk , basta verificar que o valor do terceiro campo é maior que igual a 1000 e não é nenhum usuário e imprime o primeiro campo, ou seja, o nome do usuário.
Para listar todos os usuários do sistema, ele apenas verifica gid é menor que 1000 e imprime o nome do usuário.
Editar
Como você deseja listar root (gid = 0) na lista de usuários reais. Obtenha usuários reais como,
awk -F: '(==0)||(>=1000)&&(!="nobody"){print }' /etc/passwd
Obtenha usuários do sistema como
awk -F: '(<1000)&&(!="root"){print }' /etc/passwd
Nota Estou sempre a ignorar nobody user.