Messages
以下のように、ログファイルから値の合計(427852+ 403553+ 385167)を取得したいと思います。私はカットと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
Messages:
ファイルの9番目のフィールド(例では、9番目のフィールドはそれ以降のフィールド)の合計のみを希望する場合は、次のことができます。
$ 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
。 GNUがない場合は、いつでも次のものを使用できますperl
。
$ perl -lne '/Messages:\s*(\d+)/; $k+=$1; END{print $k}' file
1216572