두 파일에서 가장 높은 값 얻기

두 파일에서 가장 높은 값 얻기

파일이 두 개 있어요

File1
A 10
B 6
...

File2 
C 12 
D 3
...

그래서 두 번째 열을 기준으로 비교가 이루어지고 가장 높은 값에 대해 전체 행이 인쇄되는 awk 스크립트를 작성하려고 합니다. 이 경우 대답은 다음과 같습니다.

C 12
A 10
...

각 파일에는 20줄의 레코드가 있습니다. 따라서 전체 두 파일 중 상위 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

관련 정보