awk日志统计_awk统计日志文件数据

发布时间:2019-10-28编辑:脚本学堂
awk日志统计的实例代码,使用awk命令对指定格式的日志文件做统计,统计日志之中,每个人得到每种资源的总和,统计每个小时内,每种资源被得到的数量,awk命令实例教程。

如下图:
<a href=http://www.jb200.com/<a href=http://www.jb200.com/os/linux/ target=_blank class=infotextkey>linux</a>jishu/13830.html target=_blank class=infotextkey>awk</a>日志统计分析

对以上格式的日志文件做统计。
第一列为时间,第四列为事件,第六列为得到资源类型,第七列为得到资源数量。

1、统计日志之中,每个人得到每种资源的总和
 

复制代码 代码示例:
#!/bin/bash
#
LOG_PATH=~/tmplog
GET_RES="GetResource"
UID_LIST=`awk -F, '$4=="'"$GET_RES"'" {print $3}' $LOG_PATH | sort | uniq`
          
for id in $UID_LIST
do
   RES_LIST=`awk -F, '$3=="'"$id"'" && $4=="'"$GET_RES"'" {print $6}' $LOG_PATH | sort | uniq `
#   echo $RES_LIST
   for res in $RES_LIST
   do
      awk -F, '$3=="'"$id"'" && $4=="'"$GET_RES"'" && $6=="'"$res"'" {print substr($7,8)}' $LOG_PATH > ~/tmp
      awk 'BEGIN{total=0} {total+=$1} END {printf "%s,%s,%dn","'"$id"'",substr("'"$res"'",9),total}' ~/tmp
   done
done
          
rm -rf tmp
          
exit

改进后方法:
 

复制代码 代码示例:
#!/bin/bash
#
awk -F, '$4=="GetResource" {print}' ~/tmplog > tmp
      
awk '
BEGIN{
FS=","
}
{
   arr[$3,substr($6,9)]+=substr($7,8)
}
END{
   for (i in arr){
      split(i,idx,SUBSEP)
      print idx[1],idx[2],arr[idx[1],idx[2]]
   }
}
' tmp > output1
      
sort -o output1 output1
      
rm -rf tmp
      
exit

2、统计每个小时内,每种资源被得到的数量。
 

复制代码 代码示例:
#!/bin/bash
#
awk -F, '$4=="GetResource" {print}' ~/tmplog > tmp
 
awk '
BEGIN{
   FS=","
}
{
   arr[substr($1,1,13),substr($6,9)]+=substr($7,8)
}
END{
   for (i in arr){
      split(i,idx,SUBSEP)
      print idx[1],idx[2],arr[idx[1],idx[2]]
   }
}
' tmp > output2
 
rm -rf tmp
 
exit

您可能感兴趣的文章: