可変数の文字列を使用して特定の列の内容を分割する

可変数の文字列を使用して特定の列の内容を分割する

新しい行の2番目の列の各「単語」を印刷し、各新しい行の最初の列のテキストをコピーする必要があります。列はタブで区切られ、2番目の列のすべての「単語」は「GO:」で始まり、スペースで区切られます。また、各行には1から数十までのさまざまな「単語」数があります。

例えば

TRINITY_DN23871_c0_g1_i1   GO:0003735 GO:0005783 GO:0005829  
TRINITY_DN6318_c1_g1_i1    GO:0004707 GO:0005524

希望の出力

TRINITY_DN23871_c0_g1_i1   GO:0003735
TRINITY_DN23871_c0_g1_i1   GO:0005783
TRINITY_DN23871_c0_g1_i1   GO:0005829
TRINITY_DN6318_c1_g1_i1    GO:0004707
TRINITY_DN6318_c1_g1_i1    GO:0005524

私はawkを使ってみました。

awk -v RS=" " '{print}' unique.ID_all.unique.GOs2

しかし、私が得るものは

TRINITY_DN23871_c0_g1_i1
GO:0003735
GO:0005783
GO:0005829
TRINITY_DN6318_c1_g1_i1
GO:0004707
GO:0005524

アイデアが足りません。誰でも助けることができますか?

ベストアンサー1

2からフィールド数(NF)まで繰り返し、最初のフィールドと異なるフィールドをタブで区切って印刷できます。

awk '{ for (i=2;i<=NF;i++) print $1"\t"$i }' unique.ID_all.unique.GOs2

おすすめ記事