複数の配列を持つ複数のファイルから最も高い番号の要素を選択する方法

複数の配列を持つ複数のファイルから最も高い番号の要素を選択する方法

私はたくさんのファイルを持っています。各配列の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フラグメントを並べ替えます。

関連情報