이름 목록 파일의 문자열을 다른 파일에 추가하는 방법은 무엇입니까?

이름 목록 파일의 문자열을 다른 파일에 추가하는 방법은 무엇입니까?

유전 정보의 표준 파일 형식인 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/'

관련 정보