You can use osql instead. It's deprecated, but it works as you expect.
The equivalent command is:
osql -E -n -i print_test.sql
osql by default expects a username and password. Use the -E switch to use Windows authentication. This is the opposite of sqlcmd default behavior.
osql by default prints a number for every line in the input file script.
1> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15>
Use the -n switch to suppress the line numbers.
sqlcmd has no -n switch. It just doesn't print line numbers when the -i switch is set.
Martin Smith led me to the workaround by quoting the Microsoft Connect item about this issue.
If you a script which uses RAISERROR WITH NOWAIT, the output is nevertheless buffered. This works correctly with OSQL and SQLCMD from SQL 2008.