【发布时间】:2017-01-18 11:10:06
【问题描述】:
我有一个格式如下的日志文件:
1: 2017-01-17 00:00:00,723 - [INFO] gid: 123456787 type: A
2: 2017-01-17 00:00:00,727 - [INFO] gid: 123456787 Trans: 178
3: 2017-01-17 00:00:00,729 - [INFO] gid: 123456788 type: B
4: 2017-01-17 00:00:00,731 - [INFO] gid: 123456788 Trans: 121
5: 2017-01-17 00:00:00,751 - [INFO] gid: 123456789 type: C
6: 2017-01-17 00:00:00,771 - [INFO] gid: 123456790 type: D
7: 2017-01-17 00:00:00,787 - [INFO] gid: 123456790 Trans: 121
8: 2017-01-17 00:00:00,778 - [INFO] gid: 123456791 type: C
9: 2017-01-17 00:00:00,789 - [INFO] gid: 123456791 Trans: 150
我的目标是按类型统计 Trans 组的总数。我的想法是每 02 行合并一次,然后用类型的关键字进行 grep。
$ cat logfile.txt |awk 'ORS=NR%2?FS:RS'|grep A
2017-01-17 00:00:00,723 - [INFO] gid: 123456787 type: A 2017-01-17 00:00:00,727 - [INFO] gid: 123456787 Total: 178
$cat logfile.txt |awk 'ORS=NR%2?FS:RS'|grep C
2017-01-17 00:00:00,751 - [INFO] gid: 123456789 type: C 2017-01-17 00:00:00,771 - [INFO] gid: 123456790 type: D
预期输出:
$ cat logfile.txt |awk 'ORS=NR%2?FS:RS'|grep B|awk '{sum+=$16} END {print sum}
121
不幸的是,日志包含type 的行,而没有Trans 的下一行(第5 行)。
任何可以帮助我完成目标的想法。
【问题讨论】:
-
我的解决方案对您有用吗? What should I do when someone answers my question?
标签: awk grep pattern-matching