2010-04-21 8 views
0

하나뿐 아니라 모든 차이점을 어떻게 얻을 수 있습니까? 세 번째 열의 각 항목에 대해 계산 된 결과를 사용하고 싶습니다. 딜레마는 END을 제거하면 $3을 인쇄 할 수 있지만 ave을 가질 수 없다는 점입니다. 내가 떠나는 경우 END 나는 모든 차이가 있지만 ave가있다.AWK : 결과를 재사용하는 방법 NR을 제거하지 않고 END END?

awk '{sum+=$3} END {ave=sum/NR} END {print $3-ave}' coriolis_data 
-0.00964 // I want to see the rest differences, how? 

coriolis_data

.105 0.005 0.9766 0.0001 0.595 0.005 
.095 0.005 0.9963 0.0001 0.595 0.005 
.115 0.005 0.9687 0.0001 0.595 0.005 
.105 0.005 0.9693 0.0001 0.595 0.005 
.095 0.005 0.9798 0.0001 0.595 0.005 
.105 0.005 0.9798 0.0001 0.595 0.005 
.095 0.005 0.9711 0.0001 0.595 0.005 
.110 0.005 0.9640 0.0001 0.595 0.005 
.105 0.005 0.9704 0.0001 0.595 0.005 
.090 0.005 0.9644 0.0001 0.595 0.005 

답변

3

는 당신은 $3 값을 저장하기 위해 다른 배열을 만듭니다. 1 END 블록 만 사용하십시오.

awk '{sum+=$3;s3[NR]=$3} END {ave=sum/NR; for(i=1;i<=NR;i++)print s3[i]-ave}' coriolis_data