零細システムエンジニアの備忘録

RPA、サーバ、ネットワークに関する設定メモ、導入相談もコメント欄やメールに頂ければお答えしますのでお気軽にご相談下さい(^^)

【Linux】小数の計算方法 bcコマンド

Linux上でファイルサイズをバイトからMBに変換するために計算するんだけど

小さい数字だと0になってしまうので、少数点も表示したいなぁと思い何かいい方法がないかと探したところ、【bc】コマンドを利用できればいいことが分かったけど、さらに0以下の場合【0.xx】の表示ではなく【.xx】の表示になってしまったのでその対処方法も一緒にメモ

■通常

[root@]# echo $*1
0

■小数第二位まで表示 ※scaleで第何位まで表示するか指定し、bcコマンドに渡す

[root@]# echo "scale=2; 1/2" | bc
.50


■頭に0をつくように、sedコマンドで最初に【.】がついた場合【0.】に置換する

[root@]# echo "scale=2; 1/2" | bc | sed 's/^\./0./'
0.50


■さらに【MB】も一緒に表示したいとき

[root@]# echo "scale=2; 1/2" | bc | sed 's/^\./0./' | awk '{print ""$1" MB"}'

もっといい方法があればいいんだけど。。。*2

 

*1:1/2

*2:+_+