0

我有一个看起来像这样的文件:

893     990     1000    1020    1500    1655 
  0/1   1/1     0/1     .       1/0     .
  .     0/1     .       1/1     1/0     .      
  .     .       1/1     0/1     1/0     1/0

如何添加具有不同值的两列,以便输出如下所示:

ID      Population      893     990     1000    1020    1500    1655 
AD0062  pop1      0/1   1/1     0/1     .       1/0     .
AD0063  pop1      .     0/1     .       1/1     1/0     .      
AD0074  pop1      .     .       1/1     0/1     1/0     1/0

有什么提示吗?谢谢。

4

2 回答 2

1
awk '{print "ID\tPopulation\t"$0}' input_file

这是因为 ID 和 Population 是固定的。

于 2012-07-10T14:36:53.420 回答
1

根据Karl Nordström先前的回答和添加 ID 的评论,我希望这个awk程序可以完成这项工作:

内容infile

893     990     1000    1020    1500    1655 
  0/1   1/1     0/1     .       1/0     .
  .     0/1     .       1/1     1/0     .      
  .     .       1/1     0/1     1/0     1/0

内容script.awk

BEGIN {
    population = "pop1"
    id = "AD0062,AD0063,AD0065,AD0074,AD0075,AD0076,AD0077,AD0078,AD0082,\
          AD0083,AD0087,AD0091,AD0092,AD0098,AD0099,AD0100"
    split( id, id_arr, /,/ )

    OFS = "\t"
}

FNR == 1 { 
    printf "%s\t%s\t%s\n", "ID", "Population", $0
    next
}

FNR > 1 { 
    printf "%s\t%s\t%s\n", id_arr[ FNR - 1 ], population, $0
}

像这样运行它:

awk -f script.awk infile

具有以下输出:

ID      Population      893     990     1000    1020    1500    1655 
AD0062  pop1      0/1   1/1     0/1     .       1/0     .
AD0063  pop1      .     0/1     .       1/1     1/0     .      
AD0065  pop1      .     .       1/1     0/1     1/0     1/0
于 2012-07-10T16:40:13.740 回答