Verifique se / etc / passwd tem o número correto de campos em cada linha?

2

Estou procurando uma forma fácil e portátil de validar o número de campos em / etc / passwd, / etc / shadow, / etc / group e /etc/master.passwd. Isso rodaria no FreeBSD, Linux e outros Un * xes. O pwck faz isso e muito mais, mas só roda em sistemas baseados em Linux.

Como posso contar o número de campos separados por dois pontos em / 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

Seguindo o exemplo em " grep: conte o número total de ocorrências ", Eu vim com o seguinte hack rápido:

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

Mas estou procurando uma maneira melhor.

    
por Stefan Lasiewski 11.07.2011 / 22:35

1 resposta

7

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

deve fazer isso. Se o número de campos não for 7, imprima-o.

    
por 11.07.2011 / 22:38