我有许多看起来像(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