2008/3/5 Thiago Caminha da Silva <[EMAIL PROTECTED]>:
[cut]
> echo "11460.00" | tr '.' ','
>
> decimal=(`echo "11460,00" | awk -F"," '{ print $2 }'`)
> inteiro=(`echo "11460,00" | awk -F"," '{ print $1 }'`)
>
> inteiro=`echo $inteiro |sed -e ':b;
> s/\([0-9]\)\([0-9]\{3\}\($\|\.\)\)/\1.\2/; t b'`
[cut]
Olá,
segue um oneliner:
echo `echo $1 | cut -d. -f1 | rev | sed 's/.../&./g;s/\.$//' |
rev`,`echo $1 | cut -s -d. -f2`
* cut -d. -f1 extrai a parte inteira
* cut -s -d. -f2 a parte decimal, o -s ignora o resultado se nao tiver
parte decimal
* o rev inverte a string (facilita a ER do sed)
* sed 's/.../&./g;s/\.$//' a cada 3 char's imprime os mesmos e
acrescente um ponto, a segunda ER remove um qualquer ponto final
perdido
* o outro rev acerta a ordem do número novamente
* o echo imprime a parte inteira "tratada" e a parte decimal
Exemplo:
$ sh teste 12345678.90
12.345.678,90
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html