我想Messages
从如下日志文件中获取值的总和(427852+ 403553+ 385167)。我尝试过 cut 和 awk,但没有运气。
2019-08-27 21:52:49 INFO =- Reporting Cycle:10000 Lines:427852 Messages: 427852 IO_time:1391 Active Threads: 3
2019-08-27 21:52:59 INFO =- Reporting Cycle:10000 Lines:403553 Messages: 403553 IO_time:1212 Active Threads: 3
2019-08-27 21:53:09 INFO =- Reporting Cycle:10000 Lines:385167 Messages: 385167 IO_time:1200 Active Threads: 3
答案1
如果您只想要文件第 9 个字段的总和(第 9 个字段是Messages:
示例中后面的字段),您可以执行以下操作:
$ awk '{k+=$9}END{print k}' file
1216572
如果字段可以更改或者后面实际上没有空格Messages:
(其他字段似乎都没有空格),则可以提取消息后面的数字,然后将其求和:
$ grep -oP 'Messages:\s*\K\d+' file | awk '{k+=$1}END{print k}'
1216572
上面需要 GNU grep
,如果你没有,你可以随时使用perl
:
$ perl -lne '/Messages:\s*(\d+)/; $k+=$1; END{print $k}' file
1216572