Chinaunix
标题:
awk实时显示
[打印本页]
作者:
我爱大桃
时间:
2013-10-14 15:51
标题:
awk实时显示
本帖最后由 我爱大桃 于 2013-10-14 16:09 编辑
之前提过这样的问题:
<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:07:40:188929(1650:47026108042144)INFO>: KKK[902604]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902605]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902606]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902607]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902608]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902609]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902610]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902611]: queue [404]
<2013/09/16 13:07:40:188929(1650:47026108042144)INFO>: KKK[902612]: 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
我通过各位前辈的指点自己写出了如下脚本来实现:
#!/bin/awk -f
BEGIN{
FS="[][ :]+";
}
{
if(/内核消息数量/){
S=$2":"$3":"$4"\t"$(NF-1)
next;
}
if(/MO message queue/){
a[S]+=$(NF-1)
}
}
END{
for(i in a)print i"\t\t"a[i]
}
复制代码
但是这个只是针对一个已经生成好的文件好用,如果我要实时的观察某一个文件,怎么样让它实时的显示情况,就像:
time 内核消息数量 queue
13:07:40 2194731 1212
13:30:40 2184731 1215
13:50:40 94730 1218
13:57:40 2194731 1212
13:57:40 2184731 1215
13:57:40 94730 1218
14:30:40 2194731 1212
14:30:40 2184731 1215
14:30:40 94730 1218
..........
无限循环
不知道我讲明白没有,各位有什么好方法吗?关键是怎么去掉重复的时间
作者:
waker
时间:
2013-10-14 15:57
if(/MO message queue/){
a[S]+=$(NF-1)
}
for(i in a)print i"\t\t"a[i]
fflush()
}
作者:
我爱大桃
时间:
2013-10-14 16:03
本帖最后由 我爱大桃 于 2013-10-14 16:04 编辑
回复
2#
waker
如果有很多列的话会有很多重复的时间:
13:07:40 2194731 23597
13:07:40 2194731 47424
13:07:40 2194731 70374
13:07:40 2194731 70778
13:07:40 2194731 71182
13:07:40 2194731 71586
13:07:40 2194731 71990
13:07:40 2194731 72394
13:07:40 2194731 72798
13:07:40 2194731 73202
13:07:40 2194731 73606
13:07:40 2194731 74010
13:07:40 2194731 74414
13:07:40 2194731 74818
13:07:40 2194731 75222
13:07:40 2194731 75626
13:07:40 2194731 76030
13:07:40 2194731 76434
13:07:40 2194731 76838
13:07:40 2194731 77241
13:07:40 2194731 77644
13:07:40 2194731 78046
13:07:40 2194731 78448
13:07:40 2194731 78850
13:07:40 2194731 79252
13:07:40 2194731 79654
13:07:40 2194731 80056
13:07:40 2194731 80458
13:07:40 2194731 80860
13:07:40 2194731 81262
13:07:40 2194731 81664
13:07:40 2194731 82066
13:07:40 2194731 82468
13:07:40 2194731 82870
13:07:40 2194731 83272
13:07:40 2194731 83674
13:07:40 2194731 84076
13:07:40 2194731 84478
13:07:40 2194731 84879
13:07:40 2194731 85280
13:07:40 2194731 85681
13:07:40 2194731 86082
13:07:40 2194731 86483
13:07:40 2194731 86884
13:07:40 2194731 87285
13:07:40 2194731 87686
13:07:40 2194731 88087
13:07:40 2194731 88488
13:07:40 2194731 88889
13:07:40 2194731 89290
13:07:40 2194731 89691
13:07:40 2194731 90092
13:07:40 2194731 90493
13:07:40 2194731 90894
13:07:40 2194731 91295
13:07:40 2194731 91696
13:07:40 2194731 92096
13:07:40 2194731 92496
13:07:40 2194731 92896
13:07:40 2194731 93296
13:07:40 2194731 93696
13:07:40 2194731 94096
13:07:40 2194731 94496
13:07:40 2194731 94896
13:07:40 2194731 95296
13:07:40 2194731 95696
13:07:40 2194731 96096
13:07:40 2194731 96496
13:07:40 2194731 96896
13:07:40 2194731 97296
13:07:40 2194731 97696
13:07:40 2194731 98096
13:07:40 2194731 98496
13:07:40 2194731 98896
13:07:40 2194731 99296
13:07:40 2194731 99696
13:07:40 2194731 100096
13:07:40 2194731 100496
13:07:40 2194731 100896
13:07:40 2194731 101296
13:07:40 2194731 101696
13:07:40 2194731 102096
13:07:40 2194731 102496
13:07:40 2194731 102896
13:07:40 2194731 103296
13:07:40 2194731 103696
13:07:40 2194731 104096
13:07:40 2194731 104496
13:07:40 2194731 104896
13:07:40 2194731 105296
13:07:40 2194731 105696
13:07:40 2194731 106096
13:07:40 2194731 106496
13:07:40 2194731 106896
13:07:40 2194731 107296
13:07:40 2194731 107696
13:07:40 2194731 108096
13:07:40 2194731 108496
13:07:40 2194731 108895
13:07:40 2194731 109294
13:07:40 2194731 109693
13:07:40 2194731 110092
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 110491
13:07:40 2194731 117564
13:07:40 2194731 117564
13:07:40 2194731 124120
13:07:40 2194731 124120
13:07:40 2194731 124120
13:07:40 2194731 124120
13:07:40 2194731 124120
13:07:40 2194731 124120
13:07:40 2194731 129295
13:07:40 2194731 129295
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:07:40 2194731 134120
13:08:40 2194730 23597
13:07:40 2194731 134120
13:08:40 2194730 47424
13:07:40 2194731 134120
13:08:40 2194730 70374
13:07:40 2194731 134120
13:08:40 2194730 70778
13:07:40 2194731 134120
13:08:40 2194730 71182
13:07:40 2194731 134120
13:08:40 2194730 71586
13:07:40 2194731 134120
13:08:40 2194730 71990
13:07:40 2194731 134120
13:08:40 2194730 72394
13:07:40 2194731 134120
13:08:40 2194730 72798
13:07:40 2194731 134120
13:08:40 2194730 73202
13:07:40 2194731 134120
13:08:40 2194730 73606
13:07:40 2194731 134120
13:08:40 2194730 74010
13:07:40 2194731 134120
13:08:40 2194730 74414
13:07:40 2194731 134120
13:08:40 2194730 74818
13:07:40 2194731 134120
13:08:40 2194730 75222
13:07:40 2194731 134120
13:08:40 2194730 75626
13:07:40 2194731 134120
13:08:40 2194730 76030
13:07:40 2194731 134120
13:08:40 2194730 76434
13:07:40 2194731 134120
13:08:40 2194730 76838
13:07:40 2194731 134120
13:08:40 2194730 77241
13:07:40 2194731 134120
13:08:40 2194730 77644
13:07:40 2194731 134120
13:08:40 2194730 78046
13:07:40 2194731 134120
13:08:40 2194730 78448
13:07:40 2194731 134120
13:08:40 2194730 78850
13:07:40 2194731 134120
13:08:40 2194730 79252
13:07:40 2194731 134120
13:08:40 2194730 79654
13:07:40 2194731 134120
13:08:40 2194730 80056
13:07:40 2194731 134120
13:08:40 2194730 80458
13:07:40 2194731 134120
13:08:40 2194730 80860
13:07:40 2194731 134120
13:08:40 2194730 81262
作者:
我爱大桃
时间:
2013-10-14 17:11
有大侠有思路吗?
作者:
rdcwayx
时间:
2013-10-15 11:10
本帖最后由 rdcwayx 于 2013-10-15 13:16 编辑
回复
4#
我爱大桃
tail -100f infile |awk '/------/{t=id=num="";printf RS}/MO message queue/{split($2,a,":");t=a[1]":"a[2]":"a[3];id=$NF}/: queue /{gsub(/[][]/,"",$NF);num+=$NF;printf "\r%-20s%-20s%-20s",t,id,num}' OFS="\t"
复制代码
我用来测试的输入文件是这样的,里面的中文都给替换了:
$ cat infile
<2013/09/16 09:54:11:539000(347:47235084696480)INFO>: -----------------------------
<2013/09/16 13:07:40:177026(1650:47026108042144)INFO>: | system data:
<2013/09/16 13:07:40:177039(1650:47026108042144)INFO>: | MO message queue: [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-10-15 14:20
本帖最后由 我爱大桃 于 2013-10-15 14:23 编辑
回复
5#
rdcwayx
十分感谢,现在功能已经实现,但是有个疑问,就是在最后printf上,你一加上\r所有的重复时间就没有了,这是为啥啊,\r不是硬回车的意思吗?
还有就是架上printf RS,第一行就显示,不加第一行就不显示,这也是为啥啊。。。
作者:
rdcwayx
时间:
2013-10-15 14:43
\r 是用来回显,也就是不换行回到行首显示,这样的话,就可以模拟出实时的更新。
printf RS 那条语句用来判断是否是开个新行接受新数据。
作者:
rdcwayx
时间:
2013-10-15 14:54
回复
6#
我爱大桃
|Sequence Description |
+-------------------------------------------------------+
|\a ASCII bell (NAWK only) |
|\b Backspace |
|\f Formfeed |
|\n Newline |
|\r Carriage Return |
|\t Horizontal tab |
|\v Vertical tab (NAWK only) |
|\ddd Character (1 to 3 octal digits) (NAWK only) |
|\xdd Character (hexadecimal) (NAWK only)
作者:
我爱大桃
时间:
2013-10-15 15:03
回复
8#
rdcwayx
刚才我也man了一下printf,版大的语句就是在当前条件下输出每条语句,一条条覆盖,得到最后的就是最终累加结果,所以时间自然就只有一个了,不知道我说的对不
作者:
rdcwayx
时间:
2013-10-16 08:38
回复
9#
我爱大桃
差不多,但是只覆盖最后一行。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2