我正在寻找一种简单、可移植的方法来验证 /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,则打印出来。