(PF.table)과 같은 파일이 여러 개 있습니다.
Pyrococcus_furiosus_COM1_XCP003685_1 5 15
Pyrococcus_furiosus_COM1_XCP003685_2 20 24
Pyrococcus_furiosus_COM1_XCP003685_3 40 58
및 관련 시퀀스 파일(PF.seq):
ctgaggcgacatacgtttgagatacctggcaggtgatatgcaatgaggaaaaaacttgttggaatattgacaatattggttgctttgggcatgttagtaagccc....
나는 첫 번째 파일의 값으로 표시된 문자 위치에서 시작하여 길이가 5인 부분 문자열을 분리하는 파일을 출력하는 명령을 작성하려고 했습니다. 완벽한 출력은 다음과 같습니다.
>Pyrococcus_furiosus_COM1_XCP003685_1_up
cgaca
>Pyrococcus_furiosus_COM1_XCP003685_1_down
gtttg
>Pyrococcus_furiosus_COM1_XCP003685_2_up
agata
...
표의 숫자는 시퀀스의 특정 기능 위치에 해당하며 해당 기능의 업스트림 및 다운스트림 5자를 추출하고 싶습니다. awk를 통해 이 두 파일을 전달하는 방법을 알아내는 데 정말 어려움을 겪고 있습니다! 감사해요
답변1
awk '
NR==FNR{ seq=$0; next }
{
print ">" $1 "_up"
print substr(seq, $2, 5)
print ">" $1 "_down"
print substr(seq, $3, 5)
}
' PF.seq PF.table
산출:
>Pyrococcus_furiosus_COM1_XCP003685_1_up
ggcga
>Pyrococcus_furiosus_COM1_XCP003685_1_down
gtttg
>Pyrococcus_furiosus_COM1_XCP003685_2_up
agata
>Pyrococcus_furiosus_COM1_XCP003685_2_down
acctg
>Pyrococcus_furiosus_COM1_XCP003685_3_up
gcaat
>Pyrococcus_furiosus_COM1_XCP003685_3_down
gttgg