행을 열로 바꾸는 쉘 또는 Python 스크립트

행을 열로 바꾸는 쉘 또는 Python 스크립트

다음 숫자가 포함된 큰 파일이 있습니다.

 1 2 3 4
 5 6 7 8
 9 9 9 9

으로 변환하고 싶습니다.

 1 5 9
 2 6 9
 3 7 9
 4 8 9

Google에서 솔루션을 검색했지만 이러한 솔루션이 내 상황에 맞지 않습니다.

답변1

이 솔루션은 귀하에게 효과적입니다.

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

시험

cat file

1 2 3 4
5 6 7 8
9 0 1 11

위 명령을 실행한 후 출력은 다음과 같습니다.

1 5 9
2 6 0
3 7 1
4 8 11

인용하다

https://stackoverflow.com/questions/1729824/transpose-a-file-in-bash

답변2

사용할 수 있는 경우 perl:

$ perl -anle '
    $l[$_] .= $F[$_] for 0..$#F;
    END {
        print join " ", split // for @l;
    }' file
1 5 9
2 6 9
3 7 9
4 8 9

또는 다음을 사용하십시오 unpack.

$ perl -nle '
    $i = 0;
    $l[$i++] .= $_ for unpack "(A2)*";
    END {
        print join " ", split // for @l;
    }' file
1 5 9
2 6 9
3 7 9
4 8 9

관련 정보