免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1953 | 回复: 9
打印 上一主题 下一主题

[文本处理] awk实时显示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-14 15:51 |只看该作者 |倒序浏览
本帖最后由 我爱大桃 于 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


我通过各位前辈的指点自己写出了如下脚本来实现:
  1. #!/bin/awk -f
  2. BEGIN{
  3. FS="[][ :]+";
  4. }
  5. {
  6. if(/内核消息数量/){
  7.    S=$2":"$3":"$4"\t"$(NF-1)
  8.    next;
  9. }
  10. if(/MO message queue/){
  11.    a[S]+=$(NF-1)
  12. }
  13. }
  14. END{
  15. for(i in a)print i"\t\t"a[i]
  16. }
复制代码
但是这个只是针对一个已经生成好的文件好用,如果我要实时的观察某一个文件,怎么样让它实时的显示情况,就像:
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
..........
无限循环
不知道我讲明白没有,各位有什么好方法吗?关键是怎么去掉重复的时间

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2013-10-14 15:57 |只看该作者
if(/MO message queue/){
   a[S]+=$(NF-1)
}

for(i in a)print i"\t\t"a[i]
fflush()
}

论坛徽章:
0
3 [报告]
发表于 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



   

论坛徽章:
0
4 [报告]
发表于 2013-10-14 17:11 |只看该作者
有大侠有思路吗?

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
5 [报告]
发表于 2013-10-15 11:10 |只看该作者
本帖最后由 rdcwayx 于 2013-10-15 13:16 编辑

回复 4# 我爱大桃
  1. 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"
复制代码
我用来测试的输入文件是这样的,里面的中文都给替换了:
  1. $ cat infile

  2. <2013/09/16 09:54:11:539000(347:47235084696480)INFO>: -----------------------------
  3. <2013/09/16 13:07:40:177026(1650:47026108042144)INFO>: | system data:
  4. <2013/09/16 13:07:40:177039(1650:47026108042144)INFO>: | MO message queue:         [2194731]
  5. <2013/09/16 13:07:40:188925(1650:47026108042144)INFO>: KKK[902601]: queue [404]
  6. <2013/09/16 13:07:40:188927(1650:47026108042144)INFO>: KKK[902602]: queue [404]
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-10-15 14:20 |只看该作者
本帖最后由 我爱大桃 于 2013-10-15 14:23 编辑

回复 5# rdcwayx
十分感谢,现在功能已经实现,但是有个疑问,就是在最后printf上,你一加上\r所有的重复时间就没有了,这是为啥啊,\r不是硬回车的意思吗?
还有就是架上printf RS,第一行就显示,不加第一行就不显示,这也是为啥啊。。。

   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
7 [报告]
发表于 2013-10-15 14:43 |只看该作者
\r 是用来回显,也就是不换行回到行首显示,这样的话,就可以模拟出实时的更新。

printf RS 那条语句用来判断是否是开个新行接受新数据。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 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)

论坛徽章:
0
9 [报告]
发表于 2013-10-15 15:03 |只看该作者
回复 8# rdcwayx
刚才我也man了一下printf,版大的语句就是在当前条件下输出每条语句,一条条覆盖,得到最后的就是最终累加结果,所以时间自然就只有一个了,不知道我说的对不


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
10 [报告]
发表于 2013-10-16 08:38 |只看该作者
回复 9# 我爱大桃


    差不多,但是只覆盖最后一行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP