여러 배열이 있는 여러 파일에서 가장 높은 번호의 요소를 선택하는 방법

여러 배열이 있는 여러 파일에서 가장 높은 번호의 요소를 선택하는 방법

나는 많은 파일을 가지고 있는데, 각각은 많은 배열(아래의 입력 1과 2와 같은)을 포함하고 있습니다. 각 배열의 두 번째 행에는 두 개의 요소 번호가 있습니다. 두 번째 행의 첫 번째와 두 번째 열에 대해 가장 큰 숫자를 선택한 다음 첫 번째 행의 두 번째 숫자를 인쇄하려면 논리적 기준을 사용해야 합니다.

예를 들어 아래 표시된 파일 입력 1에서 가장 큰 숫자는 10.8(두 번째 행, 첫 번째 열)이므로 6.1703(배열의 첫 번째 행에 있는 숫자)을 인쇄합니다. 다른 가장 큰 숫자는 10.1261(두 번째 행의 두 번째 열)이므로 6.1932(이 배열의 첫 번째 행에 있는 숫자)를 인쇄하겠습니다.

그래서 이런 식으로 많은 배열을 출력해야 합니다. 여기서는 두 개의 파일과 하나의 출력만 제시합니다.

입력 파일 1

1: 6.1703
 10.8 2.6

2: 6.1932
 7.01640 10.1261

3: 6.5664
 6.356 8.1

4: 8.0923
 1.41 7.6

입력 파일 2

1: 7.2703
 3.8 8.6

2: 7.6892
 4.7 7.6576

3: 7.85874
 16.356 5.1

4: 9.8348
 4.1 3.6

산출

6.1703     6.1932
7.85874    7.2703

답변1

GNU awk를 사용하면 특수 배열을 사용하여 배열을 정렬하는 방법을 정의할 수 있습니다 PROCINFO. 이렇게 하면 문제가 단순화될 수 있습니다.

awk 'BEGIN{RS='\n\n'}{a[$3]=$2; b[$4]=$2} \
     END{PROCINFO["sorted_in"]="@ind_num_asc"; \
     for(i in a) x=a[i]; for(i in b) y=b[i]; print x,y}' file1

산출:

6.1703 6.1932

모든 파일에 대해 이 명령을 실행하려면 셸의 모든 파일을 반복하거나 이 awk조각을 다시 정렬하면 됩니다.

관련 정보