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/passwdfieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:$ echo $?0As 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/passwdfieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::$ echo $?1Can I force awk to exit with a return status of '1', and print all lines which match?
awk: forcing a return status?
text processing;shell script;awk
Keep the status in a variable and use it in an END block.awk -F: 'NF != 7 {print; err = 1}         END {exit err}' /etc/passwd