2

次のようなスペース区切りのファイルがあります。

GID_1 AID_1 2
GID_1 AID_2 1
GID_1 AID_3 3
GID_2 AID_1 3
GID_2 AID_2 1
GID_2 AID_3 2
GID_3 AID_1 1
GID_3 AID_2 1
GID_3 AID_3 3

列 1 と 3 を列 2 で転置し、次のようにします。

(X)   GID_1 GID_2 GID_3
AID_1  2     3     1
AID_2  1     1     1
AID_3  3     2     3

「(X)」を付けたのは、この転置によりそのフィールドが空白になるためです。これは問題ありません。

お願いします、誰か助けてくれませんか?

4

1 に答える 1

1

解決awk

awk -F" |_" '
    {
    g=g>$2?g:$2
    a=a>$4?a:$4
    arr[$2 " " $4]=$5
    } 
    END {
    for (j=1;j<=g;j++)
        {
        printf "\tGID_%s",j
        }
    print ""
    for (i=1;i<=a;i++)
        {
        printf "AID_%s",i
        for (j=1;j<=g;j++)
            {
            printf "\t%s",arr[j " " i]
            }
        print ""
        }
    }
    ' file
        GID_1   GID_2   GID_3
AID_1   2       3       1
AID_2   1       1       1
AID_3   3       2       3
于 2013-10-23T08:38:42.633 に答える