使用awk总结基于单词的数字

时间:2011-07-19 22:31:59

标签: regex awk

有多个句子行,它们位于其中一个输出中。

[%d][%d] msg_sent = %result

[%d][%d] msg_sent_node number = %result2

其中%d,$ result和$ result2是数字。

这些行是随机排序的。

我想总结%result中的所有数字和%result2所以它会在末尾打印2个数字(第一个是%结果中所有数字的总和,第二个是所有数字的总和) %result2格式。)

例如,如果文件由4行以下

组成
[1][1] msg_sent = 5000
[1][2] msg_sent = 6000
[1][2] msg_sent_node number = 100
[1][1] msg_sent_node number = 200

我希望2个输出数字为11000和300。

我怎么能用awk做到这一点?

2 个答案:

答案 0 :(得分:3)

awk '/msg_sent_node number/ { node_total += $5  } /msg_sent / { sent_total = sent_total + $4} END { print sent_total " " node_total }'

如果这样写的话可能更容易理解:

/msg_sent_node number/ { node_total += $5 } 
/msg_sent / { sent_total += $4} 
END { print sent_total " " node_total }

答案 1 :(得分:0)

执行此操作的非常基本且不那么通用的脚本如下:

awk '{ if ($3 == "number") { b += $5 } else { a += $4 } } END { print a " " b }' file
相关问题