2013-10-17 102 views
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 

和我想轉通過柱2列1和3,並具有這樣的:

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

I」我已經放了一個「(X)」,因爲這個轉換會使這個字段變成空白,這對我來說很好。

請問,任何人都可以幫助我嗎?

+2

來自這個問題建議的副本完全不同。 – Thor

+0

@Thor你說得對。在建議的重複行中,標籤是唯一的。 – BartoszKP

+0

的確,我沒有看到「重複」是如何應用於此的......我想通過「第2列」進行轉置,並且在重複中它們只是轉置所有內容...... – NickSerao

回答

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