좋은 아침이에요,
나는 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}'