- 论坛徽章:
- 145
|
本帖最后由 jason680 于 2013-03-26 13:35 编辑
回复 1# yestreenstars
Would you like this
Description: (mask them to see description)
x ($1) for key name
p[x] for full name
c[x] for count
p[x,1] for total $4
p[x,2] for total $5
p[x,3] for Max $4, and the same line $5 be p[x,4]
p[x,5] for Min $4, and the same line $5 be p[x,6]
$ awk '{x=$1;p[x]=$1" "$2" "$3;if(!c[x]++)for(n=0;n++<2;)p[x,n]=p[x,n+2]=p[x,n+4]=$(n+3);else{p[x,1]+=$4;p[x,2]+=$5;if(p[x,3]<$4){p[x,3]=$4;p[x,4]=$5}if(p[x,5]>$4){p[x,5]=$4;p[x,6]=$5}}}END{for(x in c){if(c[x]<=2){x4=p[x,1]/c[x];x5=p[x,2]/c[x]}else{x4=(p[x,1]-p[x,3]-p[x,5])/(c[x]-2);x5=(p[x,2]-p[x,4]-p[x,6])/(c[x]-2)}print p[x],x4,x5}}' FILE
Ken Black Driver 84.67 47.33
Anne Red Student 60.86 105.27
Peter Blue Teacher 73.96 20.54
Sue Yellow Worker 76.38 88.47
---without x4 and x5 ----------------
$ awk '{x=$1;p[x]=$1" "$2" "$3;if(!c[x]++)for(n=0;n++<2;)p[x,n]=p[x,n+2]=p[x,n+4]=$(n+3);else{p[x,1]+=$4;p[x,2]+=$5;if(p[x,3]<$4){p[x,3]=$4;p[x,4]=$5}if(p[x,5]>$4){p[x,5]=$4;p[x,6]=$5}}}END{for(x in c){if(c[x]>=3){p[x,1]-=(p[x,3]+p[x,5]);p[x,2]-=(p[x,4]+p[x,6]);c[x]-=2}print p[x],p[x,1]/c[x],p[x,2]/c[x]}}' FILE
|
|