Benutzer-Werkzeuge

Webseiten-Werkzeuge


calc-awk

Die Aufgabenstellung mit dem Kommandozeilentool awk eine Liste von Kommazahlen (im Beispiel EUR Beträge) aufzusummieren.

Die Liste hat einen Betrag pro Zeile, in dieser Form.

1,99
3,99
4,75
[...]

Vereinfachtes Beispiel

$ cat betraege.txt | sed 's/,/./g' | awk '{printf("%.2f\n", $0)} {SUM=SUM+$0} END {printf("%.2f \n", SUM)}'


Das Anwendungsbeispiel ist für versandte Mails vom Amazon Video vorgesehen (alle Mails in einer Textdatei gespeichert). Das zusammengesetzte Kommando addiert jeweils den Betrag pro Zeile und gibt am Ende den Gesambetrag aus. Der Gesamtbetrag kommt leider zweimal pro Mail vor und muss deshalb mit dem Code sed 'n;d;' auf einmal reduziert werden (jede zweite Zeile löschen). Der Code sed 's/,/./g' ersetzt Komma durch einen Punkt, denn nur so kann awk mit den Werten umgehen.

$ egrep "Gesamtbetrag f=C3=BCr diese Bestellung:" betraege.txt | awk '{print $6}' |sed 'n;d;' | sed 's/,/./g' | awk '{printf("%.2f\n", $0)} {SUM=SUM+$0} END {printf("%.2f \n", SUM)}'
3.99
3.99
1.99
1.99
3.98
3.99
3.99
3.99
2.99
3.98
4.98
5.99
3.99
3.99
4.99
3.99
1.99
4.99
7.99
4.98
1.99
3.99
3.99
3.99
3.99
0.99
101.70
calc-awk.txt · Zuletzt geändert: 2020/07/09 10:53 von dwadmin