たとえば、次のような出力がありますbc
。
入力する:
echo "scale=10; BLA-BLA-HERE-NOT-IMPORTANT" | bc
出力:
.3708446283953709207058828124021300754352578903651372655882743141882\
77124645102027246581819139527644919407424570060822470537797066353573\
96635.8038454068 days
2つの質問:
- 出力を「0.3708...」などの値に丸めることはできますか?
- 最後に "\n" -s を削除できますか?
.NETで最大幅オプションが見つかりませんbc
。
答え1
GNU実装を使用すると、バックスラッシュ+改行機能を無効または拡張するbc
環境変数を設定できます。BC_LINE_LENGTH
最新バージョンでは、次のようにゼロ値を使用して無効にできます。
BC_LINE_LENGTH=0 bc <<<"2^4096"
以前のバージョンには「0オフ」機能がなく、ユーザーに影響を与えないように値を十分に大きい値に設定する必要がありました。
BC_LINE_LENGTH=10000 bc <<<"2^4096"
bcをたくさん使っていて、改行が好きではない場合は、シェルに設定する良い環境変数のように見えます。を使用している場合は、次の項目をbash
入力してください.bashrc
。
export BC_LINE_LENGTH=0
答え2
次のコードを試してみてください。
echo "scale = 4; 3.5678/3" | bc | tr '\n' ' '
scale
に設定すると、bc
丸め操作が実行されます。除算部分を任意の命令に置き換えることができます。出力はbc
再びにパイプされ、tr
改行文字(\n
)を空白に変換します。上記のコマンドでは、次のような出力を取得します。
1.1892 user@localhost:~/codes$
答え3
$ OUT=$(bc <<< "2 ^ 256")
$ echo "$OUT"
11579208923731619542357098500868790785326998466564056403945758400791\
3129639936
$ OUT=${OUT//$'\\\n'/}
$ echo "$OUT"
115792089237316195423570985008687907853269984665640564039457584007913129639936
答え4
だから、自分で答えることもできますが、すべてを合わせた結果は次のようになります。
BC_LINE_LENGTH=10000 bc -l <<< "scale=200;1/3" | tr "\n" " "
たとえば、エネルギー消費量の計算
BC_LINE_LENGTH=10000 bc -l <<< "scale=2;`cat /sys/class/power_supply/BAT1/energy_now`/1000000"