imprima linhas se as três primeiras colunas corresponderem às três primeiras colunas de outro arquivo

0

Eu tenho file1 que tem 3 colunas e arquivo2 que tem 8 colunas. O que eu queria fazer era se as 3 primeiras colunas no arquivo 2 fossem encontradas no arquivo 1, depois imprimir as 8 colunas inteiras no arquivo 2.

Eu tentei códigos como

awk 'NR==FNR{c[$1$2$3]++;next};c[$1$2$3]>0' file1 file2

... mas apenas imprimiu a última linha correspondente no arquivo2.

Não tenho ideia do que estava errado. Alguém poderia me ajudar? Eu realmente aprecio isso! Obrigado antecipadamente!

file1 se parece com isso

7000000185249020    89812   89911
7000000185249020    89912   90011
7000000185249020    202532  202631
7000000185249020    202632  202704
7000000185249020    202764  202863
.....

file2 se parece com isso

7000000185249020    89812   89911   100 14.1    20  0.511   48
7000000185249020    89912   90011   100 12.7    19.8    0.642   49
7000000185249020    90012   90023   12  11  17.9    0.704   58.3
    
por Jing 18.04.2018 / 23:54

1 resposta

0

Se os dois arquivos tiverem o mesmo tamanho, você pode fazer isso:

paste file1 file2 | awk '$1==$4 && $2==$5 && $3==$6 { print $4,$5,$6,$7,$8,$9,$10,$11}'
    
por 19.04.2018 / 00:00