Nos comentários, concluo que o arquivo animal3.txt tem retornos de carro no final de pelo menos algumas linhas. Esses caracteres se tornam parte do padrão que o grep está usando, o que faz com que os padrões não correspondam ao arquivo animal.txt .
Se o arquivo não deve ter retornos de carro, você pode usar
tr -d '\r' <animal3.txt >animal3-new.txt
para excluí-los. Você pode então substituir o arquivo animal3.txt original pelo arquivo animal3-new.txt corrigido.