我有一个关于 unix 中的 awk 命令的问题,用于合并具有共同值的多个表
选项卡1
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
选项卡 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
选项卡 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
如您所见,这些表中的 Geneid 相似,我想将这些文件合并为 1 与 GeneID 列和“Sample_n”列
awk 'NR==FNR {h[$1] = $7; next} {print $1,$7,h[$1]}' Sample_1.txt Sample_2.txt | head
如果我没有遗漏什么意思:NR==FNR,第一个文件是输出的模板 {h[$1] = $7; next} h 包含文件 1 的 GeneID 与第 7 列中的值相关联
这适用于 2 个文件,但不适用于 3 个或更多
Geneid Sample_1 Sample_2
ENSG00000278267 0 0
ENSG00000243485 0 0
我查看了这个网站,人们发布了所有代码,但我不太了解命令,所以有人知道如何合并这些文件并解释命令中的参数吗?
| column -t
如果要排列列,则将输出管道输入