It's because you aren't protecting the entire line from the shell. You should be moving the single quotes (') to encompase the entire awk expression, not just the {print} part.
Each layer of interpretation removes one level of escape, so direct commandline, strips one \, the awk command strips the next, leaving you looking for a . character.
In the shell script, the first \ is stripped, leaving \\. This is passed to sh, which strips another \, leaving \. Awk then strips the last one off.