You appear to want to count the number of tab-delimited fields in a file.  To do this, you would have to split the input line on tabs and count them.  awk can do this automatically, and it also has a special variable for the resulting number of fields, NF.
If you want to print all lines that has 996 fields (995 tabs):
awk -F '\t' 'NF == 996' <file
This is a shorthand way of writing
awk 'BEGIN { FS = "\t" } NF == 996 { print }' <file
 where print means print $0, i.e. print the input record (line), and FS is the input field separator.
 Whenever you find yourself extracting lines of text from a file and passing them to awk or sed or a similar tool in a loop, then there is always a more efficient way of doing the same operation.  Note that the above commands only calls awk a singesingle time, whereas your solution (had it passed the data correctly to awk) would have called awk for each and every line in the file.
 
                