回答:
に基づいてgid、システムユーザーとサービスユーザーは次のように分離できます。
/etc/passwdすべてのユーザーのリストとその他の情報が含まれています。サービスユーザーまたは実際のユーザーの数はgid1000以上です。したがって、実際のユーザーのリストは次のように取得できます。
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
また、システムユーザー(gid<1000)のリストは、次のように抽出できます。
awk -F: '($3<1000){print $1}' /etc/passwd
使い方
の内容は/etc/passwd、
    root:x:0:0:root:/root:/bin/bash
    ...
    souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
awkとともに使用する-F:と、行の内容がいくつかのフィールドに分割され:、フィールドセパレータとして扱われます。最初のフィールドにはユーザー名が含まれ、3番目のフィールドにはが含まれますgid。
したがって、実際のユーザーを抽出するにawkは、3番目のフィールドの値が1000以上であることを確認し、誰もいないユーザーではなく、最初のフィールド、つまりユーザー名を出力します。
すべてのシステムユーザーを一覧表示するには、チェックgidが1000未満であり、ユーザー名を出力します。
編集する
root実際のユーザーリストにリスト(gid = 0)を追加したい場合。実際のユーザーを
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
システムユーザーを取得します。
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
注私は常にnobodyユーザーを無視しています。
ログイン可能で、homedirとGIDが1000未満のローカル(システムユーザー)を一覧表示するには
 cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
他のすべてのユーザーをリストするには:(主にシステムユーザーで、GIDが1000未満):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1