从两个文件中获取最高值

从两个文件中获取最高值

我有两个文件

File1
A 10
B 6
...

File2 
C 12 
D 3
...

所以我试图编写一个 awk 脚本,其中根据第二列进行比较,对于最高值,整行都会打印出来。在这种情况下:答案将是:

C 12
A 10
...

我在每个文件中有二十行的记录。因此,我需要打印整个两个文件中的前二十名。我真的被这个问题困扰了。

答案1

我不会在这里使用 awk:

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

答案2

GNUawk替代解决方案:

样本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

相关内容