- 论坛徽章:
- 0
|
本帖最后由 我爱大桃 于 2013-10-12 14:53 编辑
有这样一段数据:
<2013/09/16 09:54:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:07:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:07:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [2194731]
<2013/09/16 13:30:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:30:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:30:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [2184731]
<2013/09/16 13:50:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:50:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:50:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [94730]
我想通过awk来实现打印出这样的情景:
time 内核消息数量
13:07:40 2194731
13:30:40 2184731
13:50:40 94730
不知道各位有什么好的方法来实现。。。。
刚才楼下的几位已经帮我实现了上面的功能了 十分感谢,出来的效果是我需要的样子,十分感谢。
awk -F '[][ :]+' '$0 ~ /\[/{print $2":"$3":"$4,$(NF-1)}'
awk -F '[][ :]+' 'BEGIN{print "time\t\t内核"}/]$/{print $2":"$3":"$4"\t"$(NF-1)
awk -F '[][ :]+' '{print $2":"$3":"$4"\t"$(NF-1)}'
现在如果我需要的数据比之前多了很多:
<2013/09/16 09:54:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:07:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:07:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [2194731]
<2013/09/16 13:07:40:188925(1650:47026108042144)INFO>: KKK[902601]: queue [404]
<2013/09/16 13:07:40:188927(1650:47026108042144)INFO>: KKK[902602]: queue [404]
<2013/09/16 13:07:40:188927(asdasdasd
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902603]: queue [404]
<2013/09/16 13:30:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:30:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:30:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [2184731]
<2013/09/16 13:30:40:188925(1650:47026108042144)INFO>: KKK[902601]: queue [405]
<2013/09/16 13:30:40:188927(1650:47026108042144)INFO>: KKK[902602]: queue [405]
<2013/09/16 13:30:40:188929(1650:47026108042144)INFO>: KKK[902603]: queue [405]
<2013/09/16 13:30:40:188927(asdasdasd
<2013/09/16 13:50:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:50:40:177026(1650:47026108042144)INFO>: | 系统内核数据:
<2013/09/16 13:50:40:177039(1650:47026108042144)INFO>: | 内核消息数量: [94730]
<2013/09/16 13:50:40:188925(1650:47026108042144)INFO>: KKK[902601]: queue [406]
<2013/09/16 13:50:40:188927(1650:47026108042144)INFO>: KKK[902602]: queue [404]
<2013/09/16 13:50:40:188929(1650:47026108042144)INFO>: KKK[902603]: queue [408]
<2013/09/16 13:50:40:188927(asdasdasd
然后将同一时刻的KKK[902601],KKK[902602],KKK[902603]后面的queue[]里面的值取出来进行累加,然后再打印成下面的形式:
time 内核消息数量 queue
13:07:40 2194731 1212
13:30:40 2184731 1215
13:50:40 94730 1218
不知道各位有什么好办法,还有一点,awk -F '[][ :]+',这里的'[][ :]+'是什么意思?这么复杂的FS我第一次看到。。。我是新手,麻烦也一起解答了吧。。。。
|
|