I'm looking for an easy, portable way to validate the number of fields in /etc/passwd, /etc/shadow, /etc/group and /etc/master.passwd. This would run on FreeBSD, Linux and other Un*xes. pwck does this, and more, but it only runs on Linux-based systems.
How can I count the number of fields separated by colons in /etc/passwd?
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
Following the example in "grep: count total number of occurrences", I came up with the following quick hack:
cat /etc/passwd | while read LINE; do echo $LINE | grep -o ':' |wc -l; done
But I'm looking for a better way.