I got one line of output. All of the values for $VAR1 were printed, while $VAR2 and $VAR3 were skipped. Instead I want one line of output per line of input. Thank you in advance.
It is not clear what you really want.
But use awk only. awk -F '[ -]' '{awk code here}' infile gives you a way to define field separators, in the example space and hyphen.
example:
awk -F '[ -]' '{ print $2, $4, $5 }' infile
Let's start from this. Play with it. If you need more help: Please show us your desired output.
The reason why you are getting one single output line only is that after you redirect stdin to INPUT_FILE, read eats up the first line, awk No. one consumes all the other lines of the file until EOF, and so just one line is printed during the first (and only) loop iteration. And I guess, that "123456" did not really appear in you sample output unless your sample input had an extra line at the top.