用于十进制值的awk脚本

时间:2018-04-24 18:23:18

标签: bash awk

如果column 7< 1.0E-08 AND ,我正在使用此脚本提取行 第8列有一个或多个值> 0.2 and 0.3

这是正确的方法吗?

InputFile:head -1 test.txt

 A2            DR28     P3379          72          7       5.008    8.252e-14 
    0.05132,0.04248,0.002704,0.116,0.04439,0.2,0.3

  A2            DR28     P3379          72          7       5.008    0.05    
   0.05132,0.04248,0.002704,0.116,0.04439,0.006,0.004

脚本:首先我做了

awk '{if($7 < 1.0E-08 || $8 > 0.2) print}' test.txt 

这会将第一行作为输出,但我想使用&& (AND)代替|| (OR)

当我使用AND (&&)

awk '{if($7 < 1.0E-08 && $8 > 0.2) print}' test.txt

虽然第一行符合此标准,但没有结果。

我也试过这个,但这里只考虑第8列作为截止点

awk -F',' '$8 > 0.2' test.txt 

这个脚本工作正常但我需要考虑列7,因为我在输出中有几行,所以只是想确保我没有遗漏任何东西

1 个答案:

答案 0 :(得分:0)

没有经过测试,但这样的事情应该有效

 $ awk 'function anyGreater(x,v) {    
           n=split(x,f8,","); 
           for(i=1;i<=n;i++) if(f8[i]>v) return 1; 
           return 0}

        $7<1.0E-08 && anyGreater($8,0.2)' file