如何重新格式化矩阵

如何重新格式化矩阵

我有一个这样的文件:

column1   column2   column3  column4   column5
 5e-05   1e-05 0.00083   4e-05 0.00021
 6e-05   3e-05 1.00083   2e-05 1.00021

我需要重新格式化它才能像这样打印和输出。

column1   5e-05      6e-05
column2   1e-05      3e-05
column3   0.00083    1.00083
column4   4e-05      2e-05
column5   0.00021    1.00021

我正在尝试使用

 tr ' ' '\n' | 
 pr -3t

但到目前为止还没有成功。

我找到了一个解决方案:

awk '
{ 
    for (i=1; i<=NF; i++)  {
        a[NR,i] = $i
    }
}
NF>p { p = NF }
END {    
    for(j=1; j<=p; j++) {
        str=a[1,j]
        for(i=2; i<=NR; i++){
            str=str" "a[i,j];
        } 
        print str 

      }
 }' file

但输出看起来像这样:

column1 5e-05 5e-05
column2 1e-05 1e-05
column3 0.00083 0.00083
column4 4e-05 4e-05
column5 0.00021 0.00021

我希望输出的数字被格式化

答案1

我找到了所提出问题的两个答案:

第一个由@steeldriver 提出:

    tr -s ' ' '\n' < file | pr -3t

第二个,我在另一篇关于转置矩阵元素的讨论中发现:

awk '
{ 
    for (i=1; i<=NF; i++)  {
        a[NR,i] = $i
    }
}
 NF>p { p = NF }
END {    
     for(j=1; j<=p; j++) {
          str=a[1,j]
    for(i=2; i<=NR; i++){
        str=str" "a[i,j];
    } 
    print str 

  }
 }' file

相关内容