Ich versuche, die Summe der Reisedistanz zu berechnen, und sie wird in der Textdatei perfekt berechnet. Die Ergebnisse würden jedoch auf 4 Dezimalstellen gerundet werden
Wenn ich beispielsweise versuche, 10,1361234 und 10,1461621 Meter aus dem Distanzprotokoll hinzuzufügen, wird anstelle des ursprünglichen Ergebnisses von 20,2822855 das Ergebnis wie unten gezeigt gerundet.
Gesamtdistanz.txt
2021-04-09 13:44:26 Total distance: 20.2823 meters
EntfernungsLog.txt
2021-04-09 12:31:55 Distance travelled: 10.1361234 meters
2021-04-09 12:31:55 Distance travelled: 10.1461621 meters
Ich wollte jedoch die ursprünglichen Dezimalwerte beibehalten, ohne sie zu runden. Gibt es eine Möglichkeit, dies zu tun? Unten ist mein Code angehängt
#!/bin/bash
SUM=0;
<DistanceLog.txt >> totaldistance.txt awk '{ SUM+=$6 } END{ print date_time,echo"Total distance:", SUM,distance }' date_time="$(date +'%F %T')" distance="meters"
Danke schön!
Antwort1
Wenn Sie in dieawkman-Seite, die Standardeinstellungawk OFMT
ist %.6g
(6 gibt die Anzahl der signifikanten Ziffern an); Sie können es ändern in: .6f
gibt die Anzahl der Ziffern nach dem Komma an, oder %f
ohne Begrenzung. Also:
<infile >>outfile awk '{ SUM+=$5 }
END{ OFMT="%.6f"; print date_time, "Total distance:", SUM, distance }' \
date_time="$(date +'%F %T')" distance="meters"