如何用bash比较和分配ort多列?

问题描述 投票:1回答:1

不幸的是,我找不到任何帖子来解决我的具体问题。也许我使用了错误的字符串进行搜索。不过,问题是这样的。

我有一个有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命令来实现这个功能?

非常感谢。

bash sorting multiple-columns
1个回答
0
投票

我将尝试。

#!/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 
© www.soinside.com 2019 - 2024. All rights reserved.