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

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

Re: [shell-script-pt] separador de milhar


From: PY2YP
Subject: Re: [shell-script-pt] separador de milhar
Date: Mon, 2 Nov 2020 21:25:34 -0300
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0

Muito obrigado Ferando, eu não conhecia e funcionou. A solução final que adotei foi criar uma função e usá-la ao longo do script.

73 DX de PY2YP - Cesar

On 11/2/2020 9:01 PM, Fernando Mercês wrote:
Opa,

Sei que que já resolveu - e que bom! Mas queria ressaltar que tem o programa numfmt, parte do GNU coreutils (logo, preseente no Cygwin) também:

$ numfmt --g 13434324.24
13,434,324.24

Como a formatação depende do locale, pode ser interessante forçar:

$ LC_NUMERIC='en_US.UTF-8' numfmt --g 13434324.24
13,434,324.24

Uma maneira simples que encontrei de usar ponto ao invés de vírgula e já trocar a vírgula no teu número pra um ponto de uma vez, sem ter que brincar com locales, é usando o tr:

$ LC_NUMERIC='en_US.UTF-8' numfmt --g 13434324.24 | tr ., ,.
13.434.324,24

Só uma alternativa pra ter em mente, caso precise um dia. :-)

Abraço.

Atenciosamente,

Fernando Mercês
http://menteb.in <http://menteb>

    On Wednesday, Oct 28, 2020 at 2:59 PM, PY2YP <py2yp@py2yp.com
    <mailto:py2yp@py2yp.com>> wrote:
    Ufa! Funcionou. Agora é só alterar o restante do script.
    Muito obrigado Itamar e a todos que dedicaram seus tempos

    --
    Cesar

    On 10/28/2020 2:42 PM, Itamar Santos de Souza por (shell-script-pt)
    wrote:
    Então esquece o awk e tenta esse sed para formatar o número,
    espero que
    funcione:

    sed -r -e 's/\./,/' -e ':a;s/([^.,])([0-9]{3})([,.])/\1.\2\3/;t a'

    E depois usa o printif para alinhar como se fosse uma string.

    []'s
    Itamar

    Em quarta-feira, 28 de outubro de 2020 14:23:25 BRT, PY2YP
    <py2yp@py2yp.com> escreveu:


    Muito obrigado Paulo mas o Cygwin é ruim de serviço, nada funcionou.

    --
    Cesar

    On 10/28/2020 11:22 AM, Paulo wrote:
    ops não usei um número com milhar

    octal
    awk 'BEGIN {printf "%\047.2f\n", 13434324.24}'
    13.434.324,24

    hexa
    awk 'BEGIN {printf "%\x27.2f\n", 13434324.24}'
    13.434.324,24

    awk --posix 'BEGIN {printf "%\x27.2f\n", 13434324.24}'
    ccfdd427.2f


    aspa simples escapada
    awk 'BEGIN {printf "%'\''.2f\n", 13434324.24}'
    13.434.324,24


    On 28/10/2020 11:15, Paulo wrote:
    Olá Cesar, isso pode ser incompatibilidade do Cygwin?
    O awk reconhece o octal
    awk 'BEGIN {printf "%\047f\n", 10/3}'
    3,333333

    Hexadecimal só o GNU awk reconhece acho
    awk 'BEGIN {printf "%\x27f\n", 10/3}'
    3,333333

    awk --posix 'BEGIN {printf "%\x27f\n", 10/3}'
    327f

    Veja se o Cygwin reconhece assim
    awk 'BEGIN {printf "%'\''f\n", 10/3}'
    3,333333
    fecha as aspas simples do awk depois imprime uma aspa simples
    (escapada \' ou entre aspas duplas "'")
    depois abre as aspas simples do awk novamente.
    Abraços Paulo

    On 28/10/2020 09:05, PY2YP wrote:
    Bom dia senhores,

    Estou tentando formatar uma saída com separadores de milhar. Os
    comandos abaixo funcionam muito bem:

    LC_NUMERIC=en_US printf "%'.2f\n" 13434324.24 retornando
    13,434,324.24 em seguida enviando:
    sed -i 's/\./\,/g' filename
    retorna:
    13.434.324,24

    Até aí não há qualquer dúvida. O problema é que preciso dessa
    formatação nesta associação de comandos:

    grep "CRA" b4.csv | awk -F";" '{x+=$3}END{printf "Total de CRA"
    "%51.2f\n",  x}'  >> total.csv

    Aonde o arquivo b4.csv tem os valores no formato 13434324.24.

    Então o comando para formatação ficaria assim:
    grep "CRA" b4.csv | awk -F";" '{x+=$3}END{printf "Total de CRA"
    "%'51.2f\n",  x}'  >> total.csv
    Trazendo o foco para o gerador do problema: "%'51.2f\n" o single
    quote está conflitando com o single quote de abertura da chave do
    awk: '{...
    Tentei usar "%\047... mas não funcionou. Uso o CYGWIN64.
    Alguma dica? Agradeço antecipadamente,

    _______________________________________________
    Lista brasileira de usuários de shell script
    Endereço de e-mail da lista: shell-script-pt@nongnu.org
    <mailto:shell-script-pt@nongnu.org>
    Para se inscrever ou desinscrever acesse:
    https://lists.nongnu.org/mailman/listinfo/shell-script-pt
    <https://lists.nongnu.org/mailman/listinfo/shell-script-pt>
    Para ver os arquivos da lista (mensagens anteriores) e pesquisar
    nelas,
    acesse https://lists.nongnu.org/archive/html/shell-script-pt/
    <https://lists.nongnu.org/archive/html/shell-script-pt/>

    NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
    utilize somente esta.


    _______________________________________________
    Lista brasileira de usuários de shell script
    Endereço de e-mail da lista: shell-script-pt@nongnu.org
    <mailto:shell-script-pt@nongnu.org>
    Para se inscrever ou desinscrever acesse:
    https://lists.nongnu.org/mailman/listinfo/shell-script-pt
    <https://lists.nongnu.org/mailman/listinfo/shell-script-pt>
    Para ver os arquivos da lista (mensagens anteriores) e pesquisar
    nelas,
    acesse https://lists.nongnu.org/archive/html/shell-script-pt/
    <https://lists.nongnu.org/archive/html/shell-script-pt/>

    NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
    utilize somente esta.

    _______________________________________________
    Lista brasileira de usuários de shell script
    Endereço de e-mail da lista: shell-script-pt@nongnu.org
    Para se inscrever ou desinscrever acesse:
    https://lists.nongnu.org/mailman/listinfo/shell-script-pt
    Para ver os arquivos da lista (mensagens anteriores) e pesquisar
    nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

    NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por
    favor utilize somente esta.

    _______________________________________________
    Lista brasileira de usuários de shell script
    Endereço de e-mail da lista: shell-script-pt@nongnu.org
    Para se inscrever ou desinscrever acesse:
    https://lists.nongnu.org/mailman/listinfo/shell-script-pt
    Para ver os arquivos da lista (mensagens anteriores) e pesquisar
    nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

    NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
    utilize somente esta.


_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: 
https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse 
https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize 
somente esta.




reply via email to

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