첫 번째 열의 두 행이 동일한 숫자로 시작하는지 확인하고 싶고, 이런 일이 발생하면 두 번째 열의 평균을 표시해야 합니다. 파일 예:
01 21 6 10% 93.3333%
01 22 50 83.3333% 93.3333%
02 20.5 23 18.1102% 96.8504%
02 21.5 100 78.7402% 96.8504%
03 22.2 0 0% 100%
03 21.2 29 100% 100%
04 22.5 1 5.55556% 100%
04 23.5 17 94.4444% 100%
05 22.7 9 7.82609% 100%
05 21.7 106 92.1739% 100%
06 23 11 17.4603% 96.8254%
06 22 50 79.3651% 96.8254%
07 20.5 14 18.6667% 96%
07 21.5 58 77.3333% 96%
08 21.8 4 100% 100%
09 22.6 0 0% 100%
09 21.6 22 100% 100%
예를 들어 처음 두 줄은 로 시작 01
하지만 단 한 줄만 08
(15번 줄)로 시작합니다. 따라서 이 두 가지 경우를 기반으로 한 출력은 다음과 같아야 합니다.
01 21.5
...
...
...
08 21.8
...
...
...
나는 다음 awk 라인으로 끝났습니다. 파일에 항상 두 개의 유사한 라인이 있을 때 완벽하게 작동하지만 위에 표시된 파일을 사용할 때(라인 15 때문에) 실패합니다.
awk '{sum+=$2} (NR%2)==0{print sum/2; sum=0;}'
어떤 조언이라도 환영합니다.
답변1
어쩌면 다음과 같은 것일 수도 있습니다.
#!/usr/bin/awk -f
function reset(){
n = $1; sum = $2; cnt = 1
}
{
reset()
while(getline){
if(n == $1){
sum += $2; cnt++;
}else{
print n, sum/cnt
reset()
}
}
}
END{ print n, sum/cnt }