"awk"를 사용하여 파일 내의 여러 데이터 하위 집합 중에서 최대값을 결정하는 방법은 무엇입니까?

"awk"를 사용하여 파일 내의 여러 데이터 하위 집합 중에서 최대값을 결정하는 방법은 무엇입니까?

좋은 아침이에요,

나는 awk파일에 있는 여러 데이터 세트의 최대값을 사용하고 결정하려고 합니다. 데이터가 있다고 가정해 보겠습니다.

    1 2 3
  4 5 6 7 8
  9 8 7 6 5
    4 3 2
    1 2 3
  4 6 7 8 7
  7 8 7 6 5
    4 3 2

나는 출력을 다음과 같이 원한다:

9
8

4개 행마다 데이터의 하위 집합이므로 9는 첫 번째 집합의 최대값이고 8은 두 번째 집합의 최대값입니다. 첫 번째 코드 블록의 위 데이터를 다음으로 파이프합니다.

awk 'NR%4<4 || NR==4 {for(i=1;i<=NF;i++) if($i>maxval) maxval=$i;}; END { print maxval;}' > file

그러나 전체 파일의 최대값만 반환합니다.

9

하나의 awk 명령에서 n 줄(여기서는 n=4)마다 최대값을 인쇄할 수 있는지 알고 싶습니다. 아니면 분할해야 합니까? 나는 NR%4<4 || NR==4 나머지 함수가 네 번째 행마다 실행하도록 지시할 것이라고 생각했지만 모든 데이터를 보고 하나의 "maxval"만 결정하는 것처럼 보입니다.

감사해요.

답변1

awk '{for(i=1;i<=NF;i++) if($i>maxval) maxval=$i;}
     NR%4==0 { print maxval ; maxval= -1}'

답변2

또는 배열을 사용하십시오.

awk '{x=split($0,a);asort(a);if(a[x]>maxval)maxval=a[x]}
     NR%4==0 { print maxval ; maxval= -1}'

관련 정보