$ grep 'foo' file | grep -v 'foo.*foo'
Primeiro, selecione todas as linhas que contenham foo
e, em seguida, remova todas as linhas com foo
seguido por outro foo
em algum lugar na linha.
Se todas as linhas contiverem pelo menos um foo
(como no seu exemplo), você poderá pular o primeiro grep
.
Para uma solução geral para "Como faço grep
para exatamente N ocorrências de uma string?": grep
para linhas com pelo menos N correspondências, em seguida, remova as linhas com N + 1 correspondências (ou mais).