我有一个大的制表符分隔文件,如下所示
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