如何创建/排序包含匹配术语列表及其相应计数的表

时间:2013-12-05 10:28:47

标签: unix grep

我在尝试创建一个包含已在两个单独的组中匹配和计数的名称主列表的表时遇到问题。

Input_list.txt包含名称的主列表,如下所示:

-5S_rRNA
-7SK
-ABCA8
-AC002480.4
-AC002978.1
-RP11-129B22.2

这些名称已被grep'd并计入两个独立的数据组; group1_data.txt和group2_data.txt看起来像这样:

group1_data.txt

-5S_rRNA    20
-7SK    25
-AC002480.4 1
-AC002978.1 2

group2_data.txt

-5S_rRNA    1
-ABCA8  1 

我想创建一个包含主Input_list.txt和2 data.txt文件的表,其中包含匹配的名称和相应的计数。如果没有匹配,我想返回值0,看起来像这样:

Input   group1  group2
5S_rRNA 20  1
7SK 25  0
ABCA8   0   1
AC002480.4  1   0
AC002978.1  2   0

Input_list.txt和两个data.txt文件之间匹配的名称数量不相等。

我尝试过排序,但我真的被卡住了。任何建议都会很棒!

1 个答案:

答案 0 :(得分:1)

使用join:

join -e 0 -a 1 -o '1.1 2.2' Input_list.txt group1_data.txt | \
   join -a 1 -e 0 -o '1.1 1.2 2.2' - group2_data.txt | \
   sed '/ 0 0$/d'

打印:

-5S_rRNA 20 1
-7SK 25 0
-ABCA8 0 1
-AC002480.4 1 0
-AC002978.1 2 0