shell 日志分析 获取code的统计——grep awk group功能使用

来源:互联网 发布:mac ppt演讲者模式 编辑:程序博客网 时间:2024/06/09 15:00

1. grep "request:(recharge" datafile.log* | grep -v "code=200" >> recharege.log

排除code为200的

  1.1 *代表通配符

  1.2 -v 代表非含义

2. 然后用awk 进行group by操作。

 note: awk能够自动生成变量。 通过数组名+小标共同唯一确认。

例子:

我有一文本文件,例如
姓名   类型 金额
张三    1   27.43
李四    2   33.44
张三    2   55.55
丁六    1   66.66
赵七    1  77.77
我想 根据第二列——类型分别算出这个文件中所有第二列不同的(比如这里是1和2)总的金额是多少,总的行数是多少
如果是数据库,即我要的是
select sum(金额),count(*) from 表名 group by 类型;
awk '{types[$2]+=$3;count[$2]++}END{for(i intypes)printf"类型%s 共%d行 合计 %f\n",i,count[i],types[i]}' datafile

  1. more out.txt|grep out_trade_no  | awk -F'<out_trade_no>|</out_trade_no>' '{print $2}'
     更复杂的控制,-F可以用或,这样更方便的截取字符串中的某个值。其他方案可以用正则中的分组使用。高级语言(java)中的多次切割.

特殊字符用 ///转义.

特俗字符包括 双引号, 单引号 , 中括号,大括号 []

| awk -F '\\\[\\\"|\\\"\\\]' '{print $2}'

以[" 和 "]分割.




0 0
原创粉丝点击