awk基础变量:
变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
eg:
428K
./error.log.2017060700
428K ./error.log.2017060701
424K ./error.log.2017060702
428K ./error.log.2017060703
428K ./error.log.2017060704
424K ./error.log.2017060705
428K ./error.log.2017060706
428K ./error.log.2017060707
428K ./error.log.2017060708
420K ./error.log.2017060709
412K ./error.log.2017060710
412K ./error.log.2017060711
416K ./error.log.2017060712
420K ./error.log.2017060713
420K ./error.log.2017060714
420K ./error.log.2017060715
420K ./error.log.2017060716
412K ./error.log.2017060717
412K ./error.log.2017060718
420K ./error.log.2017060719
424K ./error.log.2017060720
428K ./error.log.2017060721
428K ./error.log.2017060722
428K ./error.log.2017060723
428K ./error.log.2017060800
424K ./error.log.2017060801
428K ./error.log.2017060802
424K ./error.log.2017060803
424K ./error.log.2017060804
428K ./error.log.2017060805
428K ./error.log.2017060806
428K ./error.log.2017060807
428K ./error.log.2017060808
428K ./error.log.2017060809
428K ./error.log.2017060810
428K ./error.log.2017060811
428K ./error.log.2017060812
428K ./error.log.2017060813
416K ./error.log.2017060814
416K ./error.log.2017060815
412K ./error.log.2017060816
416K ./error.log.2017060817
428K ./error.log.2017060818
556K ./error.log.2017060819
556K ./error.log.2017060820
560K ./error.log.2017060821
568K ./error.log.2017060822
572K ./error.log.2017060823
572K ./error.log.2017060900
572K ./error.log.2017060901
568K ./error.log.2017060902
568K ./error.log.2017060903
568K ./error.log.2017060904
568K ./error.log.2017060905
572K ./error.log.2017060906
572K ./error.log.2017060907
568K ./error.log.2017060908
572K ./error.log.2017060909
560K ./error.log.2017060910
556K ./error.log.2017060911
556K ./error.log.2017060912
560K ./error.log.2017060913
556K ./error.log.2017060914
556K ./error.log.2017060915
556K ./error.log.2017060916
556K ./error.log.2017060917
200K ./error.log.2017060918
1、求和
cat data|awk -F 'K' '{sum+=$1} END {print "Sum = ", sum}'2、求平均
cat data|awk -F 'K' '{sum+=$1} END {print "Average = ", sum/NR}'
3、求最大值 //开始时执行 //结束时执行
cat data| awk -F 'K' 'BEGIN{max = 0} {if($1>max) max=$1 fi} END{print "max=",max}'
4、求最小值(min的初始值设置一个超大数即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'
5、求访问次数的Top 10 Resource,可以根据此进行优化
cat output/logs/cookie_logs/`date +%u`/cookie_log|grep -v '172.16'|grep -v '127.0.0.1' |awk -F' ' '{ if(index($1,"219.141.246")!=0) print $2; else print $1 } '|sort|uniq -c|sort -n |tail -n 10
//sort排序为了计算uniq-c做准备 //sort -nr倒序排列
awk -F 'K' '{print $1}' | sort |uniq -c | sort -rn | head -n 3
awk -F 'K' '{print $1}' | sort |uniq -c | sort -rn | tail -n 2