linux如何取文件列名,在Linux上使用列名=文件名将多个文件中的列添加到新文件中...

该问题涉及到将多个具有相同前3列的(profile)文件合并,同时附加每个文件的第六列,并以文件名作为新列的标题。输入文件是文本格式,包含基因表达数据,例如'Artery_Aorta.ENSG00000000460.12.wgt.RDat.txt.profile'和'Artery_Aorta.ENSG00000000971.11.wgt.RDat.txt.profile'。目前的awk命令尝试未能按预期工作,因为它错误地将第六列的值加上6。目标是创建一个输出文件,其中包含所有前3列和附加的第六列,列名对应于输入文件名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有多个文件扩展名为.profile的6列。每个文件的前3列相同。我想让输出文件包含前3个(相似)列,然后从每个文件附加第六列。附加到输出文件的列的名称应与输入文件的名称相同。输入文件如下:

FID IID PHENO CNT CNT2 SCORE

00010 0001002 2 12 2 -0.00285

00017 0001702 2 12 2 -0.00285

另一个输入文件看起来像这样

FID IID PHENO CNT CNT2 SCORE

00010 0001002 2 28 9 -0.00843036

00017 0001702 2 28 9 0.00710286

这两个文件的名称分别是“ Artery_Aorta.ENSG00000000460.12.wgt.RDat.txt.profile”和“ Artery_Aorta.ENSG00000000971.11.wgt.RDat.txt.profile”。我希望我的输出文件看起来像

FID IID PHENO ENSG00000000460.12 ENSG00000000971.11

00010 0001002 2 -0.00285 -0.00843036

00017 0001702 2 -0.00285 0.00710286

到目前为止,我已经尝试过

paste *.profile | awk '{print $1, $2, $3, $6, $6 + 6}'

但是输出不是期望的。它会将$ 6中的值加6。但是,我想在输出文件中打印每第六列并附加前几列。输出文件如下所示

FID IID PHENO SCORE 6

00010 0001002 2 -0.00843036 5.99157

00017 0001702 2 0.00710286 6.0071

有人可以帮我吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值