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

相关内容