Como reformatar uma matriz

1

Eu tenho um arquivo como este:

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

E eu preciso re-formatá-lo para imprimir e imprimir assim.

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

Eu estava tentando usar

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

mas sem sucesso até agora.

Eu acho uma solução:

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

mas a saída é assim:

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

E eu quero que os números da saída sejam formatados

    
por alloppp 03.06.2016 / 01:15

1 resposta

2

Encontrei duas respostas para o problema proposto:

O primeiro proposto por @steeldriver:

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

E o segundo, eu encontrei em outra discussão sobre transpor elementos da matriz:

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
    
por 03.06.2016 / 13:02