fastaヘッダーの2つの特定の文字の間に文字を保持し、残りの文字を削除します。

fastaヘッダーの2つの特定の文字の間に文字を保持し、残りの文字を削除します。

fastaヘッダーの最初のコロンと2番目のコロンの間の文字を保持しようとしています。私のコーディング技術は非常に限られているので、sedとawkを使用しようとすると失敗しました。

存在する:

>TRINITY_DN10034_c0_g1:TRINITY_DN10034_c0_g1_i1:g.1561:m.1561
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1:TRINITY_DN10322_c0_g1_i2:g.1424:m.1424
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT

期待される:

>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT

助けが必要ですか?

ベストアンサー1

そしてawk

awk -F: '{ if (NF==1) { print } else { print ">"$2 } }' file

または少し圧縮してみてください。

awk -F: '{ print (NF==1) ? $1 : ">"$2 }' file

:行にフィールドが 1 つしかない場合はフィールド区切り文字を使用し、最初のフィールドを印刷し、>そうでない場合は 2 番目のフィールドを印刷します。

そしてsed

sed 's/^>[^:]\+:\([^:]\+\).*/>\1/' file

おすすめ記事