This is a followup to my earlier question.
I am validating the number of fields in /etc/passwd using this handy snippit. In the following example, the users 'fieldcount1' and 'fieldcount2' have the wrong number of fields:
$ awk -F: ' NF!=7 {print}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:
$ echo $?
0
As you'll notice, awk will exit with an return status of 0. From it's standpoint, there are no problems here.
I would like to incorporate this awk statement into a shell script. I would like to print all lines which are error, and set the return code to be 1 (error).
I can try to force a particular exit status, but then awk only prints a single line:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Can I force awk to exit with a return status of '1', and print all lines which match?