첫 번째 열을 기준으로 여러 열을 두 개의 열로 분할

첫 번째 열을 기준으로 여러 열을 두 개의 열로 분할

아래와 같이 큰 탭으로 구분된 파일이 있습니다.

ENSBTAP00000053998    GO:0005576    GO:0006952          
ENSBTAP00000014280    GO:0005515                
XP_010996658.1    GO:0005515    GO:0032947          
ENSCAFP00000005761-D107    GO:0006826    GO:0006879    GO:0008199       
XP_010987712.1-D2    GO:0004579    GO:0008250    GO:0016021     
ENSBTAP00000018349-D5    GO:0003677    GO:0003700    GO:0005634    GO:0006355    GO:0043565

위의 표를 아래와 같이 변환하려면 어떻게 해야 합니까?

ENSBTAP00000053998    GO:0005576
ENSBTAP00000053998    GO:0006952
ENSBTAP00000014280    GO:0005515
XP_010996658.1    GO:0005515
XP_010996658.1    GO:0032947
ENSCAFP00000005761-D107    GO:0006826
ENSCAFP00000005761-D107    GO:0006879
ENSCAFP00000005761-D107    GO:0008199
XP_010987712.1-D2    GO:0004579
XP_010987712.1-D2    GO:0008250
XP_010987712.1-D2    GO:0016021
ENSBTAP00000018349-D5    GO:0003677
ENSBTAP00000018349-D5    GO:0003700
ENSBTAP00000018349-D5    GO:0005634
ENSBTAP00000018349-D5    GO:0006355
ENSBTAP00000018349-D5    GO:0043565

답변1

awk를 사용하세요:

awk '{for(i=2;i<=NF;i++) print $1,$i}' OFS='\t' file

또는 펄

perl -alne '$x = shift @F; print "$x\t$_" for @F' file

관련 정보