awk 명령은 별도 파일의 값으로 하위 문자열을 인쇄합니다.

awk 명령은 별도 파일의 값으로 하위 문자열을 인쇄합니다.

(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

관련 정보