免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: yyh
打印 上一主题 下一主题

请教这个shell的写法,统计行数 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-07-03 11:52 |只看该作者
好像 把sort 后面的尾巴去掉也可以。。呵呵。短一点
  1. awk -F'[ :]+' '/^[A-Z]/{a=$7"|"$2"|"$3"|"} /^[0-9]/{b=a$1"|"$4;++S[b]}END{for(i in S) print i"|"S[i] | "sort" }' alert
复制代码

[ 本帖最后由 lucash 于 2009-7-3 14:09 编辑 ]

论坛徽章:
0
32 [报告]
发表于 2009-07-03 17:20 |只看该作者
awk '{a[substr($1,2)" "$1]++}END{for (j in a) print j" "a[j]} ' urfile

论坛徽章:
0
33 [报告]
发表于 2009-07-05 03:26 |只看该作者
cat urfile |awk -F: '{print $1,$4}' |awk '{print $1,$2}'|sort |uniq -c

论坛徽章:
0
34 [报告]
发表于 2009-07-05 09:05 |只看该作者
原帖由 ywlscpl 于 2009-7-3 11:48 发表
吃饭回来答题
awk 'NR==FNR{a[$1]=$2}NR>FNR{if ($0~/[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+$/) day=$NF"|"a[$2]"|"$3;else {split($1,M,":");b[day"|"M[1]"|"$2]++}}END{for (i in b) print i"|"b}'  


用root 来写代码啊,习惯不好

论坛徽章:
0
35 [报告]
发表于 2009-07-05 22:19 |只看该作者
感觉python 很优雅,尝试一下使用python.

论坛徽章:
0
36 [报告]
发表于 2009-07-06 10:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
sinic 该用户已被删除
37 [报告]
发表于 2009-07-06 11:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
38 [报告]
发表于 2009-07-07 18:32 |只看该作者
#!/usr/bin/env python
import sys
import re

re_hour = re.compile(r'^\d\d:')
re_sp_split = re.compile(r'\s+')

#extract the day from time line
make_day = lambda d:d[4] + '|' + d[1]  + '|' + d[2]
make_key = lambda d,c:d + '|' + c[0][0:2] + '|' + c[1]
cur_day = 'n/a|n/a|n/a'

log_cnt=dict()
for line in sys.stdin:
    m = re_hour.match(line)
    cols = re_sp_split.split(line)
    if m is not None: #this is log line ,not date
       key = make_key(cur_day, cols)
       #date | hour | err_type
       if key not in log_cnt:
            log_cnt[key] = 1
       else:
            log_cnt[key] += 1
    else:
        cur_day=make_day(cols)

sorted_key = log_cnt.keys()
sorted_key.sort()

for key in sorted_key:
    print '%s|%d' % (key, log_cnt[key])
        


[of@lbaby py]$ cat tuc
09:55:54: ERROR1 /tmp/error/log.3 50 times
Mon Jun 28 00:00:53 2009
09:55:54: ERROR1 /tmp/error/log.3 50 times
09:56:09: ERROR1 /tmp/error/log.14 50 times
10:56:12: ERROR1 /tmp/error/log.14 100 times
10:56:23: ERROR2 /tmp/error/log.5 50 times
11:56:26: ERROR2 /tmp/error/log.1 50 times
11:56:27: ERROR2 /tmp/error/log.5 100 times
Mon Jun 29 00:00:53 2009
15:56:29: ERROR3 /tmp/error/log.1 100 times
15:56:32: ERROR3 /tmp/error/log.1 150 times
16:56:33: ERROR4 /tmp/error/log.6 50 times
16:56:36: ERROR4 /tmp/error/log.6 100 times
16:56:40: ERROR4 /tmp/error/log.12 50 times
Mon Jun 30 00:00:53 2009
[of@lbaby py]$ cat tuc | ./ec.py
2009|Jun|28|09|ERROR1|2
2009|Jun|28|10|ERROR1|1
2009|Jun|28|10|ERROR2|1
2009|Jun|28|11|ERROR2|2
2009|Jun|29|15|ERROR3|2
2009|Jun|29|16|ERROR4|3
n/a|n/a|n/a|09|ERROR1|1
[of@lbaby py]$
看起来效果不错,看来是离不开re 模块了,可怜啊

[ 本帖最后由 lbaby 于 2009-7-7 18:47 编辑 ]

论坛徽章:
0
39 [报告]
发表于 2009-07-09 15:30 |只看该作者
编程高手帖,学学习习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP