私はたくさんのファイルを持っています。各配列の2番目の行には2つの要素番号があります。 2行目の1行目と2列目の最大数を選択してから、1行目の2桁目を印刷するには、論理基準を使用する必要があります。
たとえば、下のファイル入力1の最大数は10.8(2行目、1列目)なので、6.1703(配列の1行目の数字)を印刷します。他の最大数は10.1261(2行目の2列目)なので、6.1932(この配列の最初の行の数字)を印刷します。
したがって、このように多くの配列を出力する必要があります。ここでは、2つのファイルと1つの出力のみを提示します。
入力ファイル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
フラグメントを並べ替えます。