验证 /etc/passwd 每行的字段数是否正确?

验证 /etc/passwd 每行的字段数是否正确?

我正在寻找一种简单、可移植的方法来验证 /etc/passwd、/etc/shadow、/etc/group 和 /etc/master.passwd 中的字段数量。它可以在 FreeBSD、Linux 和其他 Un*xes 上运行。普沃克可以执行此操作以及更多操作,但它只能在基于 Linux 的系统上运行。

如何计算 /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

按照“grep:统计出现的总次数”,我想出了以下快速技巧:

cat /etc/passwd | while read LINE; do echo $LINE | grep -o ':'  |wc -l; done

但我正在寻找更好的方法。

答案1

awk -F: ' NF!=7 {print}' /etc/passwd

应该这样做。如果字段数不是7,则打印出来。

相关内容