Como eu escolho o número de dígitos em uma variável em meus scripts?

0

Essencialmente, eu estou executando um script que pega um monte de números de outros arquivos e os coloca juntos de uma forma útil.

Atualmente ele funciona bem, mas ele está imprimindo cada dígito dos números que ele está pegando (grepping? é uma palavra?) e eu gostaria de arredondá-lo muito antes.

um exemplo da idéia principal é:

var1=$(grep.....)

echo $var1 >> output.dat

mas isso me dá algo como 1,235215233462345345362 e eu quero muito menos dígitos.

Pergunta bônus:

Alguns dos números retornados estão em notação científica. Existe alguma maneira de mudar isso também?

ssh putty

ID do Distribuidor: RedHatEnterpriseServer Descrição: Servidor Red Hat Enterprise Linux versão 6.5 (Santiago) Versão: 6.5 Nome de código: Santiago

    
por Colin Gladue 18.09.2017 / 22:02

1 resposta

4

Use printf em vez de echo:

$ echo "$a"
1.235215233462345345362

$ LC_ALL=C printf '%.1f\n' "$a"
1.2
$ LC_ALL=C printf '%.3f\n' "$a"
1.235

( LC_ALL=C é para garantir que a marca decimal seja sempre . (na entrada e na saída), independentemente da localidade do usuário (onde pode ser , )).

    
por 18.09.2017 / 22:04