For example; using awk to check whether a text file has exactly following 3 lines:
AA
BB
CC
awk script:
cat $infile | awk '
BEGIN { retcode = 0; rowcount = 3 }
NR==1 { if ( $0 != "AA") { retcode = NR; exit }}
NR==2 { if ( $0 != "BB") { retcode = NR; exit }}
NR==3 { if ( $0 != "CC") { retcode = NR; exit }}
NR>rowcount { retcode = NR; exit }
END { if (retcode != 0) exit retcode; else if (NR != rowcount) exit NR; else exit 0 }
'
Return Value:
=0: file is same
>0: the first line that is not matched.
Please be noticed:
1. the 'exit' statement in 'NR=X' rule will cause control flow come to 'END' section immediately.
2. use 'next' to continue next line