|
From: | Julio C. Neves |
Subject: | Re: [shell-script] Duvida manipulação de String s |
Date: | Thu, 1 Dec 2016 12:55:12 -0200 |
Ah, se o bc tivesse uma opção pra concatenar um zero no final da entrada que receber hein... Já pensou que lindo?$ echo 4244434353314 | sed 's/./&+/g' | bc --add-trailing-zero442016-12-01 11:06 GMT-02:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden.br >:Rodrigo, vou tentar te explicar:$ echo $[$(echo 4244434353314 | sed -r 's/(.)/\1+/g')0]O shell tem um interpretador aritmético que vc chama com $((...)), ou $[...], ou com o cmd let. Neste caso, mandei fazer a operação do que estava dentro de $[$(echo 4244434353314 | sed -r 's/(.)/\1+/g')0].O $(...) dá prioridade de execução para o que está no seu interior, ou seja antes de qq coisa resolverá echo 4244434353314 | sed -r 's/(.)/\1+/g'.O sed guarda o texto entre parênteses para uso futuro, só que o cmd s do sed serve para substituir a expressão regular que esrtá dentro do 1o. para de barras(/) pelo texto que está no segundo. Como o ponto (.) casa com qq caractere, o que ele fez foi guardar o 1o. caractere pq está entre parênteses e substituí-lo por ele mesmo seguido de um mais (\1+) e o g (global) no final, diz para vc aplicar esta regexp enquanto for possível, isto é para todos os algarismos do número. Veja o que este sed gera:$ echo 4244434353314 | sed -r 's/(.)/\1+/g'4+2+4+4+4+3+4+3+5+3+3+1+4+O zero colocado ao final é para preencher de forma devida essa equação de forma a não dar erro de execução na operação aritmética.$ echo $(echo 4244434353314 | sed -r 's/(.)/\1+/g')04+2+4+4+4+3+4+3+5+3+3+1+4+0Espero que agora vc possa entender.Na próxima 2a. feira (dia 5/12) começo um curso de Shell, na 4Linux (SP), com duração de 40 horas onde ensino isso e muito mais. Veja os dados abaixo da minha assinatura.Em 29 de novembro de 2016 13:58, Rodrigo Cunha address@hidden [shell-script] <address@hidden.br > escreveu:Abs a todos!Meu script ficou meio feio, vou analisa-lo e posto aqui depois, pode ajudar alguém.O script que eu fiz e precisava dessa solução servia para substituir, se houvessem em um texto, as vogais das 5 primeiras palavras de cada linha por numeros(a=1,e=2.i=3,o=4,u=5) e somar os numeros das vogais de cada linha.Mais um ponto para o Shell.srs...consegui resolver o problema com a pipeline do Julio Neves.Vou ter que estudar o que esse sed faz, até ontém eu só utilizava o sed para substituir caracteres, soma eu nunca tinha feito.
echo $[$(echo 4244434353314 | sed -r 's/(.)/\1+/g')0] ;Em 28 de novembro de 2016 08:59, 'Julio C. Neves' address@hidden [shell-script] <address@hidden.br > escreveu:Eu não sei se já postei isso, mas de qq forma, com sed tb dá um bom caldo:$ echo $[$(echo 4244434353314 | sed -r 's/(.)/\1+/g')0]44Em 27 de novembro de 2016 21:32, Luiz Alberto address@hidden [shell-script] <address@hidden.br > escreveu:
On 27-11-2016 21:21, address@hidden [shell-script] wrote:
Na mesma linha da solução do Luiz Alberto, poderia ser também:
echo 4244434353314 | gawk -F "" '{ while (++i<NF) printf $i "+"; print $i }'| bc -l
[]'s
ItamarMuito boa a tua solução Itamar !!!
Luiz A Monteiro
--Atenciosamente,
Rodrigo da Silva CunhaSão Gonçalo, RJ - Brasil
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Duvida manipulação de String s, Julio C. Neves, 2016/12/01
- Re: [shell-script] Duvida manipulação de String s, Fernando Mercês, 2016/12/01
- Re: [shell-script] Duvida manipulação de String s, Julio C. Neves <=
- Re: [shell-script] Duvida manipulação de String s, Gmail, 2016/12/01
- Prev by Date: Re: [shell-script] Duvida manipulação de String s
- Next by Date: Re: [shell-script] Duvida manipulação de String s
- Previous by thread: Re: [shell-script] Duvida manipulação de String s
- Next by thread: Re: [shell-script] Duvida manipulação de String s
- Index(es):