Bash

如何在具有許多數組的許多文件中選擇最高編號的元素

  • June 6, 2016

我有許多文件,每個文件都包含許多數組(如下面的輸入 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

PROCINFO使用 GNU awk,您可以定義如何使用特殊數組對數組進行排序。這樣可以簡化問題:

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

要對所有文件執行此操作,只需在 shell 中對所有文件進行循環或重新排列此awk程式碼段。

引用自:https://unix.stackexchange.com/questions/287948