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.