wc conta todo o arquivo;
Você pode usar awk para processar linha por linha (sem contar o delimitador de linha):
echo -e "foo\nbar\nbazz\n" | grep ba | awk '{print length}'
ou como awk é principalmente um superconjunto de grep :
echo -e "foo\nbar\nbazz\n" | awk '/ba/ {print length}'
(observe que algumas implementações de awk informam o número de bytes (como wc -c ) em oposição ao número de caracteres (como wc -m ) e outras contam bytes que não fazem parte de caracteres válidos em além dos caracteres (enquanto wc -m os ignoraria na maioria das implementações))