Como colar sobre coluna por coluna de correspondência separada

0

Eu tenho estes dois arquivos:

    file1.txt  
    0 rs3094315 0 0 C T  
    0 rs12562034 0 0 A G  
    0 rs3934834 0 0 C T  

    file2.txt  
    Chr,Pos,snp_name  
    1, 742429,rs3094315   

Onde a primeira coluna do arquivo1 também é uma coluna Chr e deve ser substituída pela coluna file2 chr. No entanto, tem que corresponder snp para que se parece com isso:

    file3  
    1 rs3094315 0 0 C T  

O Arquivo2 possui números de linha e coluna diferentes.

    
por Cprzc 02.02.2016 / 04:08

2 respostas

0

já respondeu parcialmente aqui - link

awk 'NR==FNR {arr[$2]=$2FS$3FS$4FS$5FS$6; next} {print $1,arr[$3]}' file1 FS="," file2 
1 rs3094315 0 0 C T
    
por 02.02.2016 / 05:31
0

Usando join e um shell que entende as substituições do processo:

$ join -t ' ' -1 2 -2 3 -o2.1,0,1.3,1.4,1.5,1.6 <( sort -k2 file1 ) <( tr ',' ' ' <file2 | sort -k3 )
1 rs3094315 0 0 C T

O segundo arquivo, file2 , tem um problema, pois usa um delimitador de campo diferente do primeiro arquivo, file1 . Isso é solucionado ao executar seu conteúdo por meio de tr para substituir todas as vírgulas por espaços.

Os dois arquivos são classificados nos campos nos quais vamos juntar os dados; campo 2 no primeiro arquivo e campo 3 no segundo arquivo.

O join lerá esses dois conjuntos de dados e os unirá nos campos separados por espaços especificados.

Os campos de saída são determinados pelo -o flag, e escolhemos o primeiro campo do segundo arquivo, o campo de junção, seguido pelos campos de 3 a 6 do primeiro arquivo.

    
por 21.09.2017 / 20:13