Eu não sei qual verificador de lição de casa você está se referindo, mas o problema aqui é provavelmente que você não está contando as linhas com x , você está contando as ocorrências de x . O sinal -o faz com que grep imprima apenas a parte correspondente de uma linha, se houver muitos x s na mesma linha, imprimirá cada um deles separadamente:
$ echo "xxx" | grep -o x
x
x
x
Então, você não quer -o lá. Você também não precisa do wc , é para isso que a opção -c do grep é:
$ history | grep -c x
1001
No futuro, certifique-se de ler a página do manual de um comando antes de usar suas opções. Isso vai lhe poupar muitos problemas.