Como posso usar o awk para obter valor várias vezes de um arquivo para outro arquivo?

0

Arquivo1:

01 999 234 432 666 
02 888 453 234 763
03 145 334 235 456
04 234 784 482 785
05 868 453 546 787

Arquivo2:

01
01
02
03
03
05

Como eu quero fazer a correspondência entre a primeira coluna dos 2 arquivos e obter a saída esperada como mostrado:

Resultado esperado:

999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

E eu tentei o código abaixo:

awk 'NR==FNR{a[$1]=$1; next} {if($1 in a) {print $2" "$3" "$4" "$5}}' file2 file1

mas o que eu tenho é assim:

999 234 432 666
888 453 234 763
145 334 235 456
868 453 546 787

Então, como posso obter a saída esperada usando o awk?

    
por Owen 09.11.2018 / 04:00

1 resposta

3

Você precisa criar a tabela de pesquisa a partir do primeiro arquivo e, em seguida, indexá-la a partir da segunda - por exemplo,

$ awk 'NR==FNR {a[$1] = $2 FS $3 FS $4 FS $5; next} {print a[$1]}' file1 file2
999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

Alternativamente,

join -o1.2,1.3,1.4,1.5 file1 file2
    
por 09.11.2018 / 04:40