Wie zeige ich Null vor dem Dezimalpunkt in bc?

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

zeigt .125auf dem Bildschirm. Wie kann angezeigt werden, 0.125ob das Ausgabeergebnis kleiner als eins ist?

Kevin Dong
quelle

Antworten:

9

bckann vor dem Dezimalpunkt keine Null ausgeben, Sie können printf verwenden :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125
cuonglm
quelle
Mehr lesbarer Befehl. ;-)
Kevin Dong
1

Sie können in awk pfeifen

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

oder du könntest einfach awk für alles verwenden

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

Ausgabe

0.125

quelle
Warum sollten wir tun <<< ""?
Kevin Dong
@ KevinDongNaiJia awk benötigt eine Eingabedatei, um zu arbeiten, diese erstellt und leer here string. Also im Grunde so, als ob es am Ende eine leere Datei gibt, sonst liest awk von stdin. Weitere Informationen hier
@cuonglm damit du kannst, bitte bearbeite meine Antworten nicht.
@ Cuonglm Petty Downvote, schön!
1
@JID: Nicht alle Shell-Zeichenfolgen werden hier unterstützt. Sie müssen sie für andere Viewer angeben. Die Verwendung von BEGINBlock verhindert diese Probleme und ist portabel.
Cuonglm