根据第一列将多列拆分为两列

根据第一列将多列拆分为两列

我有一个大的制表符分隔文件,如下所示

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

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

相关内容