Probably linux then. My next guess would be that the shell glob isn't covering all the files you think it is. What is the exact command you're typing for head?
Did you try to copy these 50 lines in a new file and run grep again?
It worked for me. If it works for you too, than there may be something wrong with the *.txt file.
Maybe it's created on Windows and needs to run through dos2unx first or the like?
If there is nothing sensitive in the data file, why not attach it to a post so that everyone can examine it? Or, remove extraneous lines until you have created a minimal file, free of sensitive information, that still "misbehaves" when grepped, and attach that. In either case, do not copy/paste as that can modify the data.
If you do attach a file, please make sure to mention which operating system you are using? And, if you know, which implementation of grep (if this is a linux system or cygwin, it's almost certainly gnu's grep).
Alternative ways to search a file for a word include sed, awk, sh read/case glob, perl, python, ... etc. Although, if that were my file, I'd really want to know what is going on. Without knowing what's going on, you could be experiencing other false negatives and not even know it.