BC - não há “\\ n” no final + começa com zeros?

2

Esta é uma saída de bc , por exemplo:

Entrada:

echo "scale=10; BLA-BLA-HERE-NOT-IMPORTANT" | bc

Saída:

.3708446283953709207058828124021300754352578903651372655882743141882\
77124645102027246581819139527644919407424570060822470537797066353573\
96635.8038454068 days

Duas perguntas:

  • a saída pode ser arredondada para algo como "0.3708 ..."?
  • posso remover os "\ n" -s do final?

Não consigo encontrar nenhuma opção de largura máxima em bc .

    
por LanceBaynes 05.05.2011 / 07:47

3 respostas

4

Você pode tentar algo parecido com este código:

echo "scale = 4;  3.5678/3" | bc | tr '\n' ' '

A configuração de scale para bc deve fazer o trabalho de arredondamento. Você pode substituir a parte da divisão pelo comando desejado. A saída de bc é novamente canalizada para tr , o que converte a nova linha ( \n ) em espaço em branco. Para o comando acima, recebo a seguinte saída:

1.1892 user@localhost:~/codes$
    
por 05.05.2011 / 08:12
5

Há uma variável de ambiente que você pode definir chamada BC_LINE_LENGTH, que desativará o recurso de barra invertida + nova linha ou a estenderá. Versões mais recentes permitem desativá-lo com um valor de 0 assim:

BC_LINE_LENGTH=0 bc <<<"2^4096"

As versões mais antigas não têm o recurso "0 desativar" e exigem que você defina o valor como um valor grande o suficiente para não afetá-lo:

BC_LINE_LENGTH=10000 bc <<<"2^4096"

Parece que esta seria uma boa variável de ambiente para configurar em seu shell se você usa bc muito e não gosta da quebra de linha. Se você estiver usando BASH, apenas coloque isso no seu .bashrc:

export BC_LINE_LENGTH=0
    
por 10.09.2013 / 18:02
1
$ OUT=$(bc <<< "2 ^ 256")
$ echo "$OUT"
11579208923731619542357098500868790785326998466564056403945758400791\
3129639936

$ OUT=${OUT//$'\\n'/}
$ echo "$OUT"
115792089237316195423570985008687907853269984665640564039457584007913129639936
    
por 24.01.2012 / 07:05

Tags