将逻辑条件应用于awk中的十进制值

时间:2014-06-19 09:58:24

标签: bash awk logic

我有很多看起来像这样的表:

Gnl_182 -2,05   -1,57   2,38095238095238    Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 -1,47   -2,19   0   Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 -1,63   -1,82   4,16666666666667    Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 1,61290322580645    0   2,63157894736842    Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 9,09090909090909    -1,46   0   Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 -3,36   -3,02   1,0752688172043 Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 1,66666666666667    -1,37   2,22222222222222    Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 1,44927536231884    -1,14   3,7037037037037 Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_182 1,92307692307692    1,14942528735632    0   Q   Rob_4   -100
Gnl_182 1,49253731343284    -1,15   3,44827586206897    Q   Rob_4   -100,684642156432   1,9660323361869
Gnl_1964    1,36986301369863    -1,03   -1,47   Q   Rob_4   -2,73908329200197   4,40585349069822
Gnl_1964    -1,02   -1,04   -2,53   Q   Rob_4   -2,73908329200197   4,40585349069822
Gnl_1964    0   -1,17   -1,55   Q   Rob_4   -2,73908329200197   4,40585349069822
Gnl_2006    -3,63   1,49253731343284    2,08333333333333    Q   Rob_4   -23,1216666666667   23,6583333333333
Gnl_2006    4,16666666666667    2,04081632653061    2,63157894736842    Q   Rob_4   -23,1216666666667   23,6583333333333

我想验证第二列中的值是否在最后两个值定义的范围内。如果这个条件匹配,我想打印所有行。

我非常确定此代码可以正常工作

awk -F "\t" '{if($2>=$7 && $2<=$8) print}' file_name.txt > test.txt  

但事实并非如此。例如,对于第一组(Gnl_182),它删除第二列中包含值的行:

9,09
-1,47
-1,63

Wheres,只是包含

的行
9,09 
应该删除

我真的不明白我在这里失踪了什么。小数有问题吗? 谢谢!

0 个答案:

没有答案