如何使用 bash 比较和分配/排序多个列?



不幸的是,我找不到任何针对我的特定问题的帖子。也许我在搜索中使用了错误的字符串。然而,问题来了:

我有一个包含 3 列的文件。我想按以下方式对列进行排序: 这是我的样本排序列表(AA,BB,CC,DD,EE(

gene1 gene2 gene3
AA    AA    AA
BB    CC    BB
EE    DD    CC

我想要一份这样的清单。

gene1 gene2 gene3
AA    AA    AA
BB          BB
CC    CC
DD
EE

所以我的想法是,我可以很容易地找出哪个样本可用于所有基因,只有一个基因或基因组合。 如何使用 bash 命令执行此操作?

多谢。

我会尝试:

#!/bin/bash
awk '
(NR == 1) { 
print;
} 
(NR > 1){
g[$1] = g[$2] = g[$3] = 1; 
g1[NR] = $1; 
g2[NR] = $2; 
g3[NR] = $3;
} 
END {
i1 = i2 = i3 = 2;
for (key in g) {
print (g1[i1] == key ? g1[i1++] : "  ") "   ", 
(g2[i2] == key ? g2[i2++] : "  ") "   ",
(g3[i3] == key ? g3[i3++] : "  ") "   "
}
}' genes 

最新更新