Você também pode tentar:
awk 'NR==FNR{A[$1,$2]=$3; next} {$3=A[$1,$2]}1' file2 file
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
…
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.
Tags text-processing awk sed