Skip to main content
3 of 3
replaced http://unix.stackexchange.com/ with https://unix.stackexchange.com/

Verify that /etc/passwd has correct number of fields on each line?

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.

Stefan Lasiewski
  • 20.8k
  • 25
  • 72
  • 86