shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Contar Vogais


From: Julio C. Neves
Subject: Re: [shell-script] Contar Vogais
Date: Thu, 23 Nov 2006 13:02:26 -0200

acho que vc queria a qtd de *cada* vogal. Então:

f=$(echo $FRASE | tr AaEeIiOoUu 0011223344 | tr -d [:alpha:][:blank:])
for i in $(seq ${#f}); do let arr[${f:((i-1)):1}]++; done

explicando:

1a linha:
Transformei as vogais em numeros e matei os caracteres que não fossem fossem
números (se puder usar pontuação, acrescente ao fim da 1a. linha [:punct:])
e coloquei o resultado na variável f

2a linha:
${#f} - tamanho de f
${f:i:1} - devolve a cada ciclo do for a iésima posição de f (como a origem
é zero, usei ((i-1)) para subtrair 1 de i

Assim sendo, o for incrementa (com o let...++) em um array arr cujo indice é
o da vogal. Vejamos a execuçao passo-a-passo:

$ FRASE="Julio Cezar Neves"
$ f=$(echo $FRASE | tr AaEeIiOoUu 0011223344)
$ echo $f
j4l23 c1z0r n1v1s
$ f=$(echo $FRASE | tr aeiou 01234 | tr -d [:alpha:][:blank:])
$ echo $f
4231011
$ for i in $(seq ${#f}); do let arr[${f:((i-1)):1}]++; done
$ echo ${arr[@]}
1 3 1 1 1

Ou seja 1 a, 3 e, 1 i, 1 o e 1 u

Abraços,
Julio
:wq




2006/11/23, Flavio Junior <address@hidden>:
>
>   echo $FRASE | egrep -io '[aeiou]' | wc -l
>
> ou
>
> egrep -io '[aeiou]' arquivo.txt | wc -l
>
> Explicando: o egrep -o vai imprimir em uma linha cada vez que aparecer uma
> vogal no texto, sendo 1 vogal por linha, eu uso o wc -l (contar numero de
> linhas) pra me dizer o total de vogais...
>
> Espero ter ajudado.
>
> Flavio do Carmo Junior
>
>
> On 11/23/06, Marco Aurelio <address@hidden<minduin213%40yahoo.com.br>>
> wrote:
> >
> > Olá a todos, tenho o seguinte problema
> > -> Receber 2 frases, verificar qual tem o maior numero de vogais,
> > consegui contar so que so funciona com o linux rodando no cd, não
> > tenho linux instalado no computador ai peguei um cd da conectiva
> > linux para resolver uns exercicios, o problema é que esse codigo
> > retorna o numero de vogais mas no computador onde tem linux instalado
> > não funciona alguem sabe o pq?
> > ou alguem teria uma forma diferente de contar vogais, armazenando em
> > uma varialvel sem ter que utilizar um arquivo .txt,
> > obrigado segue codigo
> >
> > #!/bin/bash
> > echo 'Digite a Frase!!!'
> > read TESTE
> > clear
> > NUM_CARAC=`echo $TESTE | wc -c`
> >
> > for i in $(seq $NUM_CARAC)
> > do
> > CONTA=`echo $TESTE | cut -c$i-$i`
> >
> > if [ "$CONTA" == "A" ]||[ "$CONTA" == "a" ]||[ "$CONTA" == "E"
> > ]||[ "$CONTA" == "e" ]||[ "$CONTA" == "I" ]||[ "$CONTA" == "i" ]||[
> > "$CONTA" == "O" ]||[ "$CONTA" == "o" ]||[ "$CONTA" == "U" ]||[
> > "$CONTA" == "u" ]
> > then
> > echo $CONTA >> temp.txt
> > fi
> > done
> > VOGAL=`cat temp.txt | wc -l`
> > echo "$TESTE tem $VOGAL vogais!!!"
> > rm temp.txt
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]