両方のファイルで最も高い値を取得する

両方のファイルで最も高い値を取得する

ファイルが2つあります。

File1
A 10
B 6
...

File2 
C 12 
D 3
...

したがって、2番目の列に基づいて比較が行われ、最も高い値に対して行全体が印刷されるawkスクリプトを作成しようとしています。この場合、答えは次のようになります。

C 12
A 10
...

各ファイルには20行のレコードがあります。したがって、2 つのファイル全体の上位 20 個を印刷する必要があります。私はこの問題のため本当にパニックになりました。

答え1

ここではawkを使用しません。

cat all your files | sort -k2,2nr | head -n 20

答え2

牛に似た一種の栄養awk代替ソリューション:

サンプルfile1file2コンテンツ:

$ head file[12]
==> file1 <==
A 1
B 2
C 4
D 10
E 14
F 5
G 7

==> file2 <==
H 11
I 20
J 41
K 12
L 55
M 14
N 80
O 100

働く:

awk -v top=5 'BEGIN{ PROCINFO["sorted_in"]="@val_num_desc" }
             { a[$1]=$2 }
             END{ for(i in a) { print i,a[i]; if(++c==top) break } }' file1 file2
  • -v top=5- 数量を指す変数トップ印刷する記録

出力:

O 100
N 80
L 55
J 41
I 20

関連情報