2016-11-09 37 views
4

我有一個運行測試結果的文件。在文件中包含有大量的與每個測試的結果行:如何總結字符串中的數字並生成單個摘要字符串

$ grep "tests," results/RunAll_unit_staging-dc1.txt 
1 tests, 2 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 7 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 2 assertions, 1 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 4 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 6 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 16 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
8 tests, 152 assertions, 0 failures, 0 errors, 0 skips 
1 tests, 3 assertions, 0 failures, 0 errors, 0 skips 
$ 

我在想,如果有這些行合併成總結了總數的單個摘要行的方式。在上述情況下,它看起來像:

22 tests, 213 assertions, 1 failures, 0 errors, 0 skips 

我可以在awk它們產生數列中,像這樣:

$ grep "tests," results/RunAll_unit_staging-dc1.txt | awk '{print $1, $3, $5, $7, $9}' 
1 2 0 0 0 
1 7 0 0 0 
1 2 1 0 0 
1 3 0 0 0 
1 3 0 0 0 
1 3 0 0 0 
1 4 0 0 0 
1 6 0 0 0 
1 3 0 0 0 
1 16 0 0 0 
1 3 0 0 0 
1 3 0 0 0 
1 3 0 0 0 
8 152 0 0 0 
1 3 0 0 0 
$ 

,但我不知道在哪裏何去何從總結列並將它們放回到字符串中。也許我在看錯方向。任何幫助表示讚賞

THX

一個

回答

3

你可以試試這個;

awk '/tests/ {sum1+=$1; sum2+=$3;sum3+=$5; sum4+=$7;sum5+=$9;} END {printf "%d tests, %d assertions, %d failures, %d errors,%d skips\n" , sum1 ,sum2,sum3,sum4,sum5}' results/RunAll_unit_staging-dc1.txt 

例如;

$ awk '/tests,/ {sum1+=$1; sum2+=$3;sum3+=$5; sum4+=$7;sum5+=$9;} END {printf "%d tests, %d assertions, %d failures, %d errors, %d skips\n" , sum1 ,sum2,sum3,sum4,sum5}' testFile 
22 tests, 213 assertions, 1 failures, 0 errors, 0 skips 
+0

無需曾經同時使用grep和awk的管道中。 – 123

+0

謝謝。正是我想要的。我原來有grep和awk,因爲我不知道要採取什麼方向。管道將每個輸入到輸出步驟中,以便生成我想要的答案 – amadain

1

能否用perl

perl -lne 'while(/(\d+) (\w+)/g){$x{$2}+=$1}}{print join(", ",map{"$_ $x{$_}"}keys %x)' f 

failures 1, skips 0, errors 0, tests 22, assertions 213 
相關問題