Bash
如何在具有許多數組的許多文件中選擇最高編號的元素
我有許多文件,每個文件都包含許多數組(如下面的輸入 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
程式碼段。