Corresponder ids e imprimir o arquivo original

1

Eu tenho dois arquivos

Original: (5000 entradas)

Chr Position
chr1    879108
chr1    881918
chr1    896874
…

e um arquivo com frequências alélicas (2000 entradas)

Chr Position MAF
chr1 881918  0.007   
chr1 979748  0.007   
chr1 1120377 0.007  
chr1 1178925 0.036  

Eu gostaria que o arquivo original correspondesse às freqüências alélicas e imprimisse o arquivo de saída com 5000 entradas. Isso pode ser feito com awk ou sed?

Chr Position MAF
chr1    879108
chr1    881918 0.007
chr1    896874
…
    
por nbn 08.03.2013 / 09:11

2 respostas

0

Você também pode tentar:

awk 'NR==FNR{A[$1,$2]=$3; next} {$3=A[$1,$2]}1' file2 file
    
por 08.03.2013 / 11:43
2

Eu poderia obter o que você precisa usando join e awk

$ cat original 
chr1    879108
chr1    881918
chr1    896874
$ cat freq 
chr1 881918  0.007   
chr1 979748  0.007   
chr1 1120377 0.007  
chr1 1178925 0.036 
$ join -a1 -j 2 --nocheck-order original freq | awk '{print $2, $1, $4}'
chr1 879108 
chr1 881918 0.007
chr1 896874 

Em que -a1 significa imprimir todas as linhas do primeiro arquivo, -j 2 corresponde no segundo campo e --nocheck-order não verifica a entrada classificada. O pipe para awk é apenas para processar as colunas para uma forma que você precisa.

    
por 08.03.2013 / 11:29