【发布时间】:2019-11-22 23:45:19
【问题描述】:
我尝试使用此代码打印基因名称的标题,然后根据其位置提取子字符串,但它不起作用
>output_file
cat input_file | while read row; do
echo $row > temp
geneName=`awk '{print $1}' tmp`
startPos=`awk '{print $2}' tmp`
endPOs=`awk '{print $3}' tmp`
for i in temp; do
echo ">${geneName}" >> genes_fasta ;
echo "awk '{val=substr($0,${startPos},${endPOs});print val}' fasta" >> genes_fasta
done
done
输入文件
nad5_exon1 250405 250551
nad5_exon2 251490 251884
nad5_exon3 195620 195641
nad5_exon4 154254 155469
nad5_exon5 156319 156548
快速
atgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgcatgc............
这是我错误的输出文件
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
>
awk '{val=substr(pull_genes.sh,,);print val}' unwraped_carm_mt.fasta
输出应该是这样的:
>name1
atgcatgcatgcatgcatgcat
>name2
tgcatgcatgcatgcat
>name3
gcatgcatgcatgcatgcat
>namen....
【问题讨论】:
-
输入文件(包含少数案例)和预期结果的示例将有助于更好地了解您要完成的工作。
-
在问题中添加了该信息。谢谢!
-
看起来不错,但是你真正希望它做的“正确”输出也将是无价的,因为我仍然没有遵循你想要完成的事情。此外,设置变量的
awk行正在查看tmp,但您创建的文件称为temp。 -
请修复 shellcheck.net 发现的问题,然后使用来自示例输入的所需输出更新您的 Q。您知道这可以是一个
awk进程,而不是每行数据5-6 个吗?见grymoire.com/Unix/Awk.html。祝你好运。 -
您需要删除以下
echo "awk '{val=substr($0,${startPos},${endPOs});print val}' fasta"中的“echo”和双引号。这是命令吧?如果你把 echo 它简单地打印命令并附加到文件中。
标签: bash unix bioinformatics genome google-genomics