linux文件某列求和
http://www.2cto.com/os/201210/163426.html
0、准备和数据文件
http://www.2cto.com/os/201107/97785.html
linux文件按照某两个字段为条件
对某个字段求和
第一种方法:
www.2cto.com
01
#!/bin/bash
02
03
04
filename=sp.user
05
cat $filename|awk '{print $1" "$2" "$3}' >log.txt
06
cat log.txt|awk '{print $1" "$2}'|sort |uniq >t.txt
07
while read line
08
do
09
echo -n -e "$line\t"
10
grep "$line" log.txt|awk 'BEGIN{total=0}{total+=$3}END{print total}'
11
done <t.txt
www.2cto.com
第二种方法:
1
#!/bin/bash
2
3
4
filename=crm.sp.user
5
awk '{a[$1" "$2]+=$3}END{for(i in a)print i,a[i]}' $filename >sp.user.sumfee
比如有一个数据文件,只有一列(在之前可以通过各种手段过滤出只有数字这一列),比如操作的响应时间
Txt代码
490898
1189235
20212
1494270
146515
29369
23563
563027
22976
127809
16813
551646
18858
18977
1、求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
2、求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
3、求最大值
cat data|awk '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