有多个句子行,它们位于其中一个输出中。
[%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做到这一点?
答案 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