파일이 두 개 있어요
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
대체 솔루션:
샘플 file1
및 file2
콘텐츠:
$ 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