0

我正在尝试转置和取消堆叠一个巨大的文本数据库(制表符分隔)。

我的数据看起来像这样:

rs1 5   AB
rs2 5   BB
rs3 5   AA
rs1 6   BB
rs2 6   AA
rs3 6   AB
rs1 7   AA
rs2 7   AB
rs3 7   BB

我想把它变成:

    rs1 rs2 rs3

5   AB  BB  AA
6   BB  AA  AB
7   AA  AB  BB

非常感谢任何可以提供帮助的人。

卢卡

4

1 回答 1

0

这是使用 gawk 的一种方法。看起来很痛苦,我相信有更好的方法可以做到这一点,但 FWIW

awk -F'\t' 'BEGIN{PROCINFO["sorted_in"] = "@ind_str_asc"}; 
{arr[$1, $2] = $3; arr1[$1]; arr2[$2]};
END{
for(x in arr1){printf " "x;} {print ""};
for(y in arr2){printf y" ";for(x in arr1) printf " "arr[x, y]; print ""}
   }' input_file
于 2013-09-26T04:20:16.383 回答