Skip to main content
replaced http://unix.stackexchange.com/ with https://unix.stackexchange.com/
Source Link

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 occurrencesgrep: 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.

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.

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.

Tweeted twitter.com/#!/StackUnix/status/90624557664317441
edited tags
Link
Gilles 'SO- stop being evil'
  • 865.4k
  • 205
  • 1.8k
  • 2.3k
Source Link
Stefan Lasiewski
  • 20.8k
  • 25
  • 72
  • 86

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.