Use grep -o
, que produz apenas o texto correspondente, várias vezes por linha, se necessário.
grep -o '\<bar[^ ][^ ][ni]\>' /path/file.txt | wc -w
Os \<
e \>
correspondem ao início e ao final de uma palavra.
O [^ ]
corresponde a um caractere não espacial.