Wie kann ich die Nummer dieses Ausdrucks erhalten?

Wie kann ich die Nummer dieses Ausdrucks erhalten?

Mithilfe von timehabe ich den gewünschten Teil der Ausführungszeit eines Skripts erhalten, muss ihn aber durch eine Zahl (30) teilen. Wie mache ich das?

....| awk '/^user/ {interest=($2)/(30);print "Time user divide by 30: " interest }'

In $2 habe ich das Ergebnis 0m4.968s und möchte es durch 30 teilen und ausdrucken.

Antwort1

Diese Ausgabe 0m4.968ssieht aus wie das Standardformat für Bashs integrierte Funktion time. Um sinnvolle Berechnungen durchführen zu können, müssten die Minuten in Sekunden umgewandelt werden. Es ist jedoch einfacher, einfach das Ausgabeformat zu ändern. Wenn uns nur die Benutzerzeit interessiert, TIMEFORMAT=%Usollte die Einstellung genau diese in Sekunden ausgeben.

$ TIMEFORMAT=%U
$ time somecommand
4.968

Allerdings ist das Weiterleiten der Ausgabe des integrierten Programms timeetwas umständlich, da die gesamte Pipeline zeitlich gesteuert werden muss, aber Folgendes sollte funktionieren:

$ (time somecommand ) 2>&1 | awk '{print $1 / 30}'
0.1656

Oder wenn wir die Zeit im Originalformat analysieren müssen, mit Minuten getrennt von Sekunden, vielleicht so etwas:

$ echo "user 0m4.968s" | 
   awk '/user/ {split($2, a, "m"); secs = a[1]*60 + a[2]; print secs / 30}'
0.1656

verwandte Informationen