2013-05-15 4 views
1

я делаю cat results.txt | grep eval и я получаюКак суммировать числа с Linux

eval: -2.72907 
baseline eval (random): -0.031584202184 
eval: 0.807805 
baseline eval (random): 0.0227601966463 
eval: 2.0625 
baseline eval (random): 0.0138953249621 

Как просуммировать eval и baseline eval отдельно с помощью команд Линукс из командной строки?

+1

Вы получили 'bc' установлен? Это калькулятор сам по себе, вероятно, будет проще использовать это, чем bash. – Rup

+0

Возможный дубликат [Команда Bash для суммирования столбца чисел] (http://stackoverflow.com/questions/3096259/bash-command-to-sum-a-column-of-numbers) –

+2

Бесполезное использование кошки: использование 'grep eval results.txt' вместо этого. – Kevin

ответ

6

Awk может сделать это

% grep eval results.txt | awk -F: '{a[$1]+=$2}END{for(i in a)print i ": " a[i]}' 
eval: 0.141235 
baseline eval (random): 0.00507132 

еще лучше, так как Johnsyweb упоминалось в комментарии, пусть сделать поиск тоже:

awk -F: '/eval/{a[$1]+=$2}END{for(i in a)print i ": " a[i]}' results.txt 
+0

Хорошо, когда я вижу ваш ответ, я понимаю, что либо вы, либо я неправильно поняли вопрос ... «сумма eval и базовая оценка отдельно» ... Возможно, я ошибаюсь ... – Kent

+0

'awk -F: '/ eval/{a [$ 1] + = $ 2} END {для (i в a) напечатать i ":" a [i]} 'results.txt', конечно !? – Johnsyweb

+0

@ Kent: Это *** делает *** суммировать два отдельно. – Johnsyweb