Bagaimana cara menunjukkan nol sebelum titik desimal dalam bc?

9
echo "scale=3;1/8" | bc

muncul .125di layar. Bagaimana cara menunjukkan 0.125jika hasil keluaran kurang dari satu?

Kevin Dong
sumber

Jawaban:

9

bctidak dapat menghasilkan nol sebelum titik desimal, Anda dapat menggunakan printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125
cuonglm
sumber
Perintah yang lebih bisa dibaca manusia. ;-)
Kevin Dong
1

Anda bisa menyalurkannya ke awk

echo "scale=3;1/8" | bc | awk '{printf "%.3f\n", $0}'

atau Anda bisa menggunakan awk untuk itu semua

awk '{printf "%.3f\n", 1/8}' <<< ""

Keluaran

0.125

sumber
Kenapa harus kita lakukan <<< ""?
Kevin Dong
@KevinDongNaiJia awk membutuhkan file input untuk bekerja, ini menciptakan dan mengosongkan here string. Jadi pada dasarnya berpura-pura ada file kosong di akhir, kalau tidak awk akan membaca dari stdin. Info lebih lanjut di sini
@cuonglm jadi Anda bisa, tolong jangan edit jawaban saya.
@cuonglm Petty downvote, bagus!
1
@ JID: Tidak semua shell didukung di sini, Anda perlu menentukannya untuk orang lain. Menggunakan BEGINblok mencegah Anda dari masalah itu dan itu portabel.
cuonglm