Eu tenho uma pergunta sobre o comando awk no unix para mesclar várias tabelas com um valor comum
Tab1
Geneid Chr Start End Strand Length Sample_1
ENSG00000278267 1 17369 17436 - 68 0
ENSG00000243485 1;1;1 29554;30267;30976 30039;30667;31109 +;+;+ 1021 0
Separador 2
Geneid Chr Start End Strand Length Sample_2
ENSG00000278267 1 17369 17436 - 68 0
ENSG00000243485 1;1;1 29554;30267;30976 30039;30667;31109 +;+;+ 1021 0
Guia 3
Geneid Chr Start End Strand Length Sample_3
ENSG00000278267 1 17369 17436 - 68 0
ENSG00000243485 1;1;1 29554;30267;30976 30039;30667;31109 +;+;+ 1021 0
Como você pode ver, o Geneid é semelhante nessas tabelas, e eu gostaria de mesclar esses arquivos em 1 com a coluna GeneID e a coluna "Sample_n"
awk 'NR==FNR {h[$1] = $7; next} {print $1,$7,h[$1]}' Sample_1.txt Sample_2.txt | head
Se eu não sinto falta de algo, isso significa:
NR == FNR, o primeiro arquivo é o modelo para a saída
{h [$ 1] = $ 7; next} h contém o GeneID do arquivo 1 associado ao valor na sétima coluna
{print $ 1, $ 7, h [$ 1]} imprime a primeira / sétima / coluna do segundo arquivo para o GeneID contido no valor h
Este trabalho para 2 arquivos, mas não para 3 ou mais
Geneid Sample_1 Sample_2
ENSG00000278267 0 0
ENSG00000243485 0 0
Eu olhei neste site, e as pessoas postaram todo o código, mas eu realmente não entendo o comando, então alguém sabe como mesclar esses arquivos e pode explicar os parâmetros no comando?