The Unix passwd file is a file with records spanning a single line each. The fields are separated by a single‘:’character. Here is an example of a line:
joe:hgdu3r3bce:53:100:Joe Johnson:/users/joe:/bin/bash
The following call defines a table for it:
?- new_table('/etc/passwd', [ user(atom), passwd(code_list), uid(integer), gid(integer), gecos(code_list), homedir(atom), shell(atom) ], [ field_separator(0':) ], H).
To find all people of group 100, use:
?- findall(User, in_table(H, [user(User), gid(100)], _), Users).