linux - 如何组成矩阵表

标签 linux matrix text-files tabular

File1 有三列。 Column1 有组,column2 有属于特定组的代谢途径的名称,column3 有每个途径的一些值:

 group1  pathway1  0.664   
 group1  pathway6  1  
 group1  pathway2  0.056  

 group2  pathway2  0.321  
 group2  pathway3  0.771

File2 包含所有路径的列表:

 pathway1  
 pathway2  
 pathway3  
 pathway4  
 pathway5  
 pathway6  

输出:如何获得如下所示的矩阵表:

          group1  group2    
pathway1  0.664
pathway2  0.056   0.321
pathway3          0.771
pathway4  
pathway5  
pathway6  1 

最佳答案

使用awk:

awk 'BEGIN { print "\t group1\tgroup2";b[1];b[2] }
     FNR==NR{ if ( $1 == "group1" ) a[$2"@"1]=$3;
              if ( $1 == "group2" ) a[$2"@"2]=$3 }
     FNR!=NR { printf $1" ";
               for ( j in b) { 
                   if ( $1"@"j in a) printf a[$1"@"j]"\t" ;
                   else printf "\t"};print "" }' File1 File2

输出:

         group1 group2
pathway1 0.664
pathway2 0.056  0.321
pathway3        0.771
pathway4
pathway5
pathway6 1

关于linux - 如何组成矩阵表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722882/

相关文章:

c++ - Armadillo 中的 4 维矩阵

linux - 删除特定单词之间带有 VIM 的 .txt 的内容

c - 无法将多行文本文件复制到缓冲区

regex - 如何使用 sed 删除不包含模式的行

math - 如何插值旋转?

linux - 使用make构建后的.d文件是什么

matlab - 如何获得矩阵的唯一切片?

c# - 编辑资源中的文本文件

c++ - 以 bad_alloc 异常终止,但堆栈跟踪中没有 "new"

java.sql.SQLRecoverableException : Io error: Invalid number format for port number in ubuntu 错误