Substituir valores com base na variável de ID correspondente

0

Eu tenho dois arquivos. file1 tem 6 colunas, file2 tem 2 colunas. Desejo substituir os valores na sexta coluna de file1 pelos valores da coluna 2 de file2 , com base nas variáveis de ID correspondentes (coluna 1 nos dois arquivos).

Nota: file2 contém mais assuntos do que file1 . Portanto, o comando abaixo não funcionou, infelizmente:

awk 'NR==FNR{tmp[$1]=$2;next}{print $0,tmp[$1]}' file2 file1

file1 se parece com:

HG00096 HG00096 0 0 0 -9
HG00097 HG00097 0 0 0 -9
HG00099 HG00099 0 0 0 -9
HG00100 HG00100 0 0 0 -9
HG00102 HG00102 0 0 0 -9

file2 se parece com:

HG00096 2
HG00097 5
HG00098 5
HG00099 3
HG00100 3
HG00101 5
HG00102 3

Gostaria que o arquivo resultante tivesse a seguinte aparência:

HG00096 HG00096 0 0 0 2
HG00097 HG00097 0 0 0 5
HG00099 HG00099 0 0 0 3
HG00101 HG00100 0 0 0 5
HG00102 HG00102 0 0 0 3
    
por mats 04.09.2015 / 10:30

2 respostas

1

Você quase consegue.

awk 'NR==FNR{tmp[$1]=$2;next};{$6=tmp[$1] ; print }' file2.txt file1.txt

Onde:

  • $6 = tmp[$1] irá substituir o 6º campo.
por 04.09.2015 / 10:36
2

Use join :

join -j 1 -o 0,1.2,1.3,1.4,1.5,2.2 file1 file2

Onde:

  • -j define o campo de junção de ambos os arquivos
  • -o formata a saída conforme desejado
por 04.09.2015 / 10:54