Kra, há um tempo atrás eu fiz algo do tipo, mas que verificava somente para uma string. Se vc tomar um texto como sendo um conjunto de strings, funciona legal. Mas tem o problema de ser bastante lento, pois se utiliza de vários laços... Tem a seguinte cara:
VezCarac() { A="$1" Tamanho=${#A} ((cont=0)) for ((i=Tamanho-1;i>=0;i--)) do [ "${A:$i:1}" = "$2" ] && ((cont++)) done echo $cont } Essa função recebe dois parâmetros: uma string e um caractere. Veja o seu uso: *$ VezCarac "Viva o Linux" i* 2 Ou seja, o caractere 'i' aparece suas vezes na string "Viva o Linux". Tendo um texto, que é um conjunto de linhas, aplique essa função para cada linha, mas incrementando numa variável, em vez de exibi-la.... Ou não zerando a variável count, como eu fiz no começo da função.. Deixo claro que esta é uma solução ruim e lenta. Muito lenta. Mas como eu sou um burro em se tratando e=de expressões regulares (sed, etc) e como já conheço um pouco de outras linguagens, procuro utilizar isto para resolver os problemas que aparecem... Falow;... [As partes desta mensagem que não continham texto foram removidas]