1

作为新鱼基因组注释管道的一部分,需要比较来自 BLAST 的 e 值,以查看它们是否低于某个阈值。

为了获得正确的语义,我首先评估了爆炸输出中的其他列之一,它可以像这样正常工作:

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 指向每个命中的 e 值。

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

4

1 回答 1

2

,有awk可能:

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

这不需要首先定义变量。

于 2012-11-02T13:32:51.487 回答