行を列に置き換えるシェルまたは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

おすすめ記事