Para obter os valores principais de dois arquivos

1

Eu tenho dois arquivos

File1
A 10
B 6
...

File2 
C 12 
D 3
...

Então, estou tentando escrever um script awk onde a comparação é feita com base na segunda coluna e, para o valor mais alto, a linha inteira é impressa. Nesse caso: A resposta será:

C 12
A 10
...

Eu tenho o registro de vinte linhas em cada arquivo. Então, eu preciso imprimir os vinte primeiros dos dois arquivos inteiros. Eu estou realmente preso a isso.

    
por Bandana 03.11.2017 / 19:47

2 respostas

2

Eu não usaria o awk aqui:

cat all your files | sort -k2,2nr | head -n 20
    
por 03.11.2017 / 19:52
0

Solução alternativa do awk :

Amostra file1 e file2 contents:

$ 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

O trabalho:

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 - variável apontando para o número de registros top a serem impressos

A saída:

O 100
N 80
L 55
J 41
I 20
    
por 03.11.2017 / 20:23