用bash读取科学记数法中的数字

时间:2012-11-02 08:57:18

标签: bash bioinformatics scientific-notation blast

作为 De Novo 鱼类基因组的注释管道的一部分,我需要比较BLAST的e值,看它们是否低于某个阈值。

为了获得正确的语义,我首先评估了blast-output中的一个其他列,它的工作原理如下:

for f in FOLDER/*; do 
myVar=$(head -1 $f | awk '{print $4}') ;
if [[ $myVar -gt 50 ]]; then echo ..... ;done

然后$ 4是BLAST输出中的一列,包含整数值(命中长度或其他)

但是,当我尝试将脚本更改为使用e值时,解释科学记数法等存在一些问题......

我想要的是:

for f in FOLDER/*; do 
myVar=$(head -1 $f | awk '{print $11}') ;
if [[ $myVar -gt 1.0e-10 ]]; then echo ..... ;done

其中$ 11指向每次点击的电子价值。

这可以在bash中以不繁琐的方式完成吗?

1 个答案:

答案 0 :(得分:2)

使用awk,有可能:

for f in FOLDER/*; do awk '$11 < 1e-10 {print $11}' "$f"; done

这不需要首先定义变量。