在包含> 1M列的文件中添加包含相同值的列

时间:2011-09-17 09:26:26

标签: bash unix bioinformatics

我有一个包含超过一百万列的非常大的文件。我需要在文件中添加第二,第三,第四,第五和第六列,第二列是第一列的副本,其他列在每行上包含相同的值。例如,我有一个看起来像这样的文件:

id1 A A C T ..
id2 A G T C ..
id3 G A T C ..
id4 G G T T ..
.   
.

我需要将其更改为:

id1 id1 0 0 -9 -9 A A C T ..
id2 id2 0 0 -9 -9 A G T C ..
id3 id3 0 0 -9 -9 G A T C ..
id4 id4 0 0 -9 -9 G G T T ..
.   
.

有关如何在Unix下高效执行此操作的任何想法(因为我需要多次重复此操作)?

2 个答案:

答案 0 :(得分:3)

sed 's/^\([^ ]*\)/\1 \1 0 0 -9 -9/'

如果编写C ++程序的速度不够快,那只需要几行。

答案 1 :(得分:0)

我猜我们正在尝试将此文件转换为PLINK ped format,如果这样,则无需添加这些列,PLINK可以使用以下标志处理irregular files

  

格式不正确的PLINK文本文件

     

这些文件使您可以使用缺少家庭ID的.fam或.ped文件,   父母身分,性别和/或表型栏。

--no-fid
--no-parents
--no-sex
--no-pheno