행렬을 다시 포맷하는 방법

행렬을 다시 포맷하는 방법

다음과 같은 파일이 있습니다.

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

관련 정보