grep
não tem contador para correspondências, apenas -c
contador para linhas que têm a correspondência, mas podemos usar awk
para fazer isso. Tanto quanto eu entendo, você deseja imprimir a linha que coincide com x número de vezes com base na quantidade de correspondências. Bem, aqui está:
$ awk '{for(i=1;i<=NF;i++) if($i=="banana") counter++;for(j=1;j<=counter;j++) print NR,$0;counter=0 }' input.txt
1 There is one banana here
2 There are two banana banana here
2 There are two banana banana here
3 There are three banana banana banana here
3 There are three banana banana banana here
3 There are three banana banana banana here
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
4 Basically there is no limit to how many banana banana banana banana banana banana banana we can have
A idéia básica aqui é que nós fazemos um loop sobre cada palavra em uma linha e contamos as correspondências. Se houver uma correspondência, incrementamos o contador e usamos esse contador para imprimir a mesma linha em um loop. Finalmente, o contador é reiniciado e o processo é repetido