Je suppose qu'il s'agit d'un fichier CRLF (fichier texte formaté).
[bob@erasmas tmp]$ cat testfile
bird
notbird
[bob@erasmas tmp]$ cat testfile.dos
bird
notbird
[bob@erasmas tmp]$ file testfile
testfile: ASCII text
[bob@erasmas tmp]$ file testfile.dos
testfile.dos: ASCII text, with CRLF line terminators
[bob@erasmas tmp]$ grep '^bird' testfile
bird
[bob@erasmas tmp]$ grep '^bird' testfile.dos
bird
[bob@erasmas tmp]$ grep '^bird$' testfile
bird
[bob@erasmas tmp]$ grep '^bird$' testfile.dos
Note : Ceci s'est passé sur une machine Linux, car ce n'est pas spécifique à OS X (si c'est bien le problème).
Lancez "file" sur file.txt et voyez s'il a des fins de ligne CRLF.