我有一个看起来像这样的文件:
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
任何提示?感谢。
答案 0 :(得分:1)
awk '{print "ID\tPopulation\t"$0}' input_file
这是因为ID和人口是固定的。
答案 1 :(得分:1)
基于KarlNordströ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