Duff hat geschrieben:Ok, danke. Das mit dem Addieren funktioniert dann schonmal.
Aber wie mache ich das mit der for-Schleife?
Warum bestehst Du denn auf einer for-Schleife? Da die bash nicht rechnen kann hier mal eine Möglichkeit für die zsh.... für die bash müsstest Du halt den $((...))-Teil entsprechend für bc oder ähnliches umschreiben.
Version 1: for-Schleife über alle Zeilen in der Datei.
Version 2: Falls die Datei auch anderes enthält wird hier nach 0-9*.0-9* ge-grep-t
Version 3: Ohne Schleife, dafür mit xargs und tr
(leider funktioniert ein einfaches tr ... <file nicht, da das EOF dann mit addiert wird, was natürlich nicht funktioniert... alternativ zu xargs könnte man an der Stelle auch cut-ten)
Die Idee dabei: die Zeilen mit + konkateniert zu einem String verquirlen und dann an die für die Berechnung zuständige Instanz weitergeben. In Version 4 auch mal mit bc, müsste also auch in der bash funktionieren
Code: Alles auswählen
[m@lime /home/m] cat test
126.70
9.77
25.00
8.88
44.95
34.75
350.00
10.58
305.00
50.00
[m@lime /home/m] result=0;for i in $(cat test);do result=$(($result + $i));done;echo $result
965.63
[m@lime /home/m] result=0;for i in $(grep -o '[0-9]*\.[0-9]*' test);do result=$(($result + $i));done;echo $result
965.63
[m@lime /home/m] echo $(($(xargs <test |tr ' ' '+')))
965.63
[m@lime /home/m] echo $(xargs <test |tr ' ' '+')|bc
965.63