名前リストファイルの文字列を別のファイルに追加するには?

名前リストファイルの文字列を別のファイルに追加するには?

遺伝情報の標準ファイル形式である fasta ファイル (seq.fa) があります。

>TR1|c0_g1_i1
GTCGAGCATGGTCTTGGTCATCTTCCTTTCAAAGAA
>TR6|c0_g1_i1
GTGGAATATCGCCAGTGACCATCACTGATTAACCTG

タイトル("> TR ..."という名前)と一致する名前のファイルもあります。

TR1|c0_g1_i1    scaf0432344_50037.734_wgs
TR6|c0_g1_i1    scaf0159424_10142.072_wgs

seq.faの ">"ファイルの後の最初の識別子として、 "scaf0 ..."識別子が必要です。

次のように、各シーケンスに固有の「TR ...」識別子を保持したいと思います。

>scaf0432344_50037.734_wgs|TR1|c0_g1_i1
GTCGAGCATGGTCTTGGTCATCTTCCTTTCAAAGAA
>scaf0159424_10142.072_wgs|TR6|c0_g1_i1
GTGGAATATCGCCAGTGACCATCACTGATTAACCTG

名前ファイルの順序はシーケンスファイルの順序と同じです!

私は訓練を受けておらず、私が何をしているのかわからないので、何も試みませんでした。 :/

答え1

そしてawk

awk 'FNR==NR{
  a[">"$1]=$2;next
}
$1 in a{
  sub(/>/,">"a[$1]"|",$1)
}1' file2 seq.fa

afile2からscaf値を取得し、index配列に保存します">"$1

$1seq.faが配列のインデックスである場合は、aそれを$1scaf値に置き換えます。a[$1]>

その後、すべての行を印刷します。seq.fa

答え2

変形として

join <(paste - - <sqa.fa | cut -c2-) name -o 2.2,1.1,1.2 |
sed 's/^/>/;s/\s/|/;s/\s/\n/'

関連情報