grep -o -n '[{}]' <filename> | cut -d : -f 1 | uniq -c
La salida será algo como:
3 1
1 2
Es decir, 3 ocurrencias en la primera línea y 1 en la segunda.
Tomado de https://stackoverflow.com/a/15366097/3378354.
Después de leer varias soluciones, creo que este es el enfoque más sencillo para el problema:
while read i; do echo $i |grep -o "matchingString"| wc -l; done < input.txt