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

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

Re: [shell-script] Re: [shell-script] Re: [shell-scr ipt] Re: [shell-scr


From: Robson Alexandre
Subject: Re: [shell-script] Re: [shell-script] Re: [shell-scr ipt] Re: [shell-script] Re: Separar os dígitos de um númer o
Date: Fri, 1 Feb 2019 13:49:08 -0200

Prezados Shelleiros,

no caso do awk, este tem um parâmetro próprio para considerar o LC_NUMERIC que é o uso de --use-lc-numeric

$ awk 'BEGIN {print 4 * atan2(1,1)}'
3.14159
$ LC_NUMERIC=C awk 'BEGIN {print 4 * atan2(1,1)}'
3.14159
$ LC_NUMERIC=pt_BR.UTF-8 awk 'BEGIN {print 4 * atan2(1,1)}'
3.14159
$ LC_NUMERIC=pt_BR.UTF-8 awk --use-lc-numeric 'BEGIN {print 4 * atan2(1,1)}'
3,14159
$ LC_NUMERIC=C awk --use-lc-numeric 'BEGIN {print 4 * atan2(1,1)}'
3.14159

Atenciosamente
Robson Alexandre


Em sex, 1 de fev de 2019 às 11:24, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Grande Itamar,
eu tenho a mesma desconfiança que vc, que depende do utilitário (há muito tempo procuro uma explicação para isso) mas já havia testado no awk proprietário (do UNIX) e não consegui fazer sair com vírgula de jeito nenhum.

Testei, no meu Debian, todas as opções da sua resposta e elas só funcionaram usando a opção -N.

Acho isso muito louco!

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 



Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.



Em qui, 31 de jan de 2019 às 20:08, address@hidden [shell-script] <address@hidden> escreveu:
 

Grande Mestre Julio.

A questão que levantou foi bem peculiar e resolvi testar em algo um conjunto de programas similares, mas com implementações diferentes, então usei o gawk, nawk, mawk e o 'busybox awk'.
O script que usei foi o mesmo, inspirado no exemplo que usou do bc:
'BEGIN {print 4 * atan2(1,1)}'
Sem qualquer modificação o que obtive foi:
gawk: 3.14159
nawk: 3,14159
mawk: 3,14159
busybox awk: 3.14159

Setando as variáveis LC_ALL=pt_BR.UTF-8 o resultado foi:
gawk: 3.14159
nawk: 3,14159
mawk: 3,14159
busybox awk: 3.14159

Setando a variável LC_ALL=en_EN o resultado foi:
gawk: 3.14159
nawk: 3.14159
mawk: 3.14159
busybox awk: 3.14159

Nos exemplos acima gawk e 'busybox awk' não tem alterações independente das mudanças da variáveis de ambiente, no caso do nawk e mawk isso fez diferença no resultado.

Ao usar LANG no lugar de LC_ALL  nenhum deles foi influenciado, mantendo o comportamento do primeiro exemplo.

Quero fazer uma referência especial ao gawk, que possue a opção -N ou --use-lc-numeric:

gawk -N 'BEGIN {print 4 * atan2(1,1)}'
3,14159


LC_ALL=en_EN gawk -N 'BEGIN {print 4 * atan2(1,1)}'
3.14159

Então pelo que parece esse comportamento depende diretamente de como foi implementado isso no comando pelos desenvolvedores, então não deve haver um padrão comportamental e como sempre é necessário consultar as man pages dos comandos para definir isso.
É possível que haja diferenças também entre versões e sistemas operacionais, mas acredito que esse pequeno teste dá um vislumbre do que acontece.

Acho que é só pessoal

[]'s
Itamar


reply via email to

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