免费注册 查看新帖 |

Chinaunix

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

unix内可以做到像excel般的统计吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-10 12:45 |只看该作者 |倒序浏览
本帖最后由 xmi 于 2011-10-28 13:16 编辑

每个location都有一个log, 如usa-log, chn-log, kor-log ...... (有60个).
unix内可以做到像excel般的统计吗?
即想做:
1: 以usa-log的内容做一summary, 显示到每一个location的equipment (USAE01)有多少个event 12, event 440 .....
2: 以usa-log的内容做一个report, 显示如下:
lequipmentlocation: USA
event code: 12
09Feb11-13:45:00:108 USAE01
09Feb11-14:00:00:016 USAP05

event code: 440
09Feb11-14:00:00:035 USAP06
09Feb11-14:00:00:050 USAE06
09Feb11-14:00:00:051 USAP03
09Feb11-14:00:00:072 USAP03
09Feb11-14:00:00:075 USAP02
09Feb11-14:00:00:081 USAP05
.....

会不会天马行空呢?
-------------------------------------------------------
终于行了 ....
依cjaizss兄和yinyuemi (SS)的把 awk改为nawk就可以出现我想要的结果.

  1. cjaizss:
  2. nawk '$0!~/event/{next}{gsub(/'\''/,"",$(NF-3));a[$NF]=a[$NF]"\n" $1 " "$(NF-3)}END{print "lequipmentlocation: USA";for(i in a){print "event code:",i;sub(/\n/,"",a[i]);print a[i] "\n"}}'  log

  3. yinyuemi (SS):
  4. nawk -F "'| " 'BEGIN{print "lequipmentlocation: USA"} /event/{a["event code: "$NF]>0?a["event code: "$NF]="\n"$1"\t"$(NF-4):a["event code: "$NF]=a["event code: "$NF]"\n" $1"\t"$(NF-4)}END{for (i in a) print i, a[i]"\n"}'  log

  5. result:
  6. equipmentlocation: USA
  7. event code: 2
  8. 09Feb11-13:59:59:998 USAP01

  9. event code: 22
  10. 09Feb11-13:56:56:133 USAP07

  11. event code: 23
  12. 09Feb11-14:00:01:245 USAP02
  13. 09Feb11-14:00:01:253 USAP03
  14. 09Feb11-14:00:01:254 USAE01
  15. 09Feb11-14:00:01:255 USAP02
  16. 09Feb11-14:00:01:258 USAP03
  17. 09Feb11-14:00:01:260 USAP05

  18. event code: 9
  19. 09Feb11-13:59:59:982 USAP07

  20. event code: 77
  21. 09Feb11-13:55:54:283 USAP07

  22. event code: 44
  23. 09Feb11-13:45:00:151 USAP02
复制代码

但我怎也做不到依event code的大group做排列 (依event code 由细到大)? 请问要如何改呢?


另yinyuemi (SS)的出现统计错误, 可以如何更正呢?
  1. awk -F"'" '/event/{a[$2"\t"substr($3,5)]=++b[$3]}END{for(i in a) print i"\t"a[i]|"sort -n "}' FileName

  2. result:
  3. USAA01   event 33       1
  4. USAA05   event 55       1
  5. USAE01   event 12       1
  6. USAE01   event 23       3
  7. USAE06   event 440      2
  8. USAP01   event 2        1
  9. USAP02   event 156      1
  10. USAP02   event 23       4
  11. USAP02   event 44       1
  12. USAP02   event 440      5
  13. USAP03   event 23       5
  14. USAP03   event 440      4
  15. USAP05   event 1        1
  16. USAP05   event 23       6
  17. USAP05   event 440      6
  18. USAP06   event 440      1
  19. USAP07   event 22       1
  20. USAP07   event 66       1
  21. USAP07   event 77       1
  22. USAP07   event 9        1
复制代码

USA-log.zip

446 Bytes, 下载次数: 83

log

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2011-02-10 13:03 |只看该作者
当然可以,awk吧
awk '/event code/{current=$NF;}/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{a[current]++}END{for(i in a)print i,a[i]}'

论坛徽章:
0
3 [报告]
发表于 2011-02-10 13:14 |只看该作者
本帖最后由 xmi 于 2011-02-10 13:16 编辑
当然可以,awk吧
awk '/event code/{current=$NF;}/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{a[current]++}END{f ...
cjaizss 发表于 2011-02-10 13:03



    好像没有指定档名?  我按下enter良久也没有output?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2011-02-10 13:25 |只看该作者
后面跟文件名

论坛徽章:
0
5 [报告]
发表于 2011-02-10 17:50 |只看该作者
回复 4# cjaizss


    我试验了, 把档名加在最后, 但结果它只display了'24'..........为什么呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2011-02-10 22:30 |只看该作者
回复  cjaizss


    我试验了, 把档名加在最后, 但结果它只display了'24'..........为什么呢?
xmi 发表于 2011-02-10 17:50



    不会吧
$ echo 'lequipmentlocation: USA
event code: 12
09Feb11-13:45:00:108 USAE01
09Feb11-14:00:00:016 USAP05

event code: 440
09Feb11-14:00:00:035 USAP06
09Feb11-14:00:00:050 USAE06
09Feb11-14:00:00:051 USAP03
09Feb11-14:00:00:072 USAP03
09Feb11-14:00:00:075 USAP02
09Feb11-14:00:00:081 USAP05 ' | awk '/event code/{current=$NF;}/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{a[current]++}END{for(i in a)print i,a}'
12 2
440 6

论坛徽章:
0
7 [报告]
发表于 2011-02-10 22:43 |只看该作者
回复 6# cjaizss


真的是呀! 在公司试验时, 我输入:
awk '/event code/{current=$NF;}/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{a[current]++}END{for(i in a)print i,a}' USA-log

它的结果只有24 ...
为什么你要echo???

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2011-02-10 23:24 |只看该作者
$ cat USA-log
lequipmentlocation: USA
event code: 12
09Feb11-13:45:00:108 USAE01
09Feb11-14:00:00:016 USAP05

event code: 440
09Feb11-14:00:00:035 USAP06
09Feb11-14:00:00:050 USAE06
09Feb11-14:00:00:051 USAP03
09Feb11-14:00:00:072 USAP03
09Feb11-14:00:00:075 USAP02
09Feb11-14:00:00:081 USAP05
$ awk '/event code/{current=$NF;}/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/{a[current]++}END{for(i in a)print i,a[i]}' USA-log
12 2
440 6

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2011-02-10 23:28 |只看该作者
理会错了你的意思

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2011-02-10 23:38 |只看该作者
本帖最后由 cjaizss 于 2011-02-10 23:51 编辑

1.
awk '!/event/{next}{a[$NF]++}END{for( i in a)print "event",i,a;}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP