LinuxのFastaファイルから列を抽出する

LinuxのFastaファイルから列を抽出する

以下のようにfastaファイルがあります。

>ENST00000632684.1 cdna chromosome:GRCh38:7:142786213:142786224:1 gene:ENSG00000282431.1 gene_biotype:TR_D_gene transcript_biotype:TR_D_gene gene_symbol:TRBD1 description:T cell receptor beta diversity 1 [Source:HGNC Symbol;Acc:HGNC:12158]
GGGACAGGGGGC
>ENST00000434970.2 cdna chromosome:GRCh38:14:22439007:22439015:1 gene:ENSG00000237235.2 gene_biotype:TR_D_gene transcript_biotype:TR_D_gene gene_symbol:TRDD2 description:T cell receptor delta diversity 2 [Source:HGNC Symbol;Acc:HGNC:12255]
CCTTCCTAC

gene_symbolと説明を抽出したいです。ただし、残念ながら説明の間にスペースがあるため、説明全体を抽出できません。

私はこれを試しました

cat Homo_sapiens.GRCh38.cdna.all.fa | grep ">" | cut -f 7,8 -d" "  > Human_Annotations

ただし、これにより説明が破損した出力が得られます。

gene_symbol:TRBD1 description:T
gene_symbol:TRDD2 description:T

私はこの出力が欲しい

TRBD1 T cell receptor beta diversity 1
TRDD2 T cell receptor delta diversity 2

ベストアンサー1

使用awk:

awk -F ':' '/^>/ { sub(" .*",    "", $10)
                   sub(" \\[.*", "", $11)
                   print $10, $11 }' file.fa

抽出するデータは、[各ヘッダー行の10番目のフィールドの最初の単語と11番目のフィールドまでのすべてです(フィールドが区切ら:れている場合)。

このコードは、10番目のフィールドの最初のスペースと[11番目のフィールドの後のすべてのコンテンツ([前のスペースを含む)を削除します。

次に、変更されたフィールド10と11を印刷します。

質問のデータ出力を提供します。

TRBD1 T cell receptor beta diversity 1
TRDD2 T cell receptor delta diversity 2

おすすめ記事