Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将用户值传递给AWK中的变量。我错过了什么?_Linux_R_Shell_Math_Awk - Fatal编程技术网

Linux 将用户值传递给AWK中的变量。我错过了什么?

Linux 将用户值传递给AWK中的变量。我错过了什么?,linux,r,shell,math,awk,Linux,R,Shell,Math,Awk,我有一个表格文件 V1 V2 V3 V4 V5 V6 V7 V8 V9 chr1 3670715 3671052 338 3670940 8 4.18708 3.36070 2.11284 chr1 3671795 3672053 259 3671953 14 7.60682 4.53642 5.15603 chr1 4491782 4493687 1906 4491915 20 11.42107 5.49862 8.

我有一个表格文件

 V1      V2      V3   V4      V5 V6       V7      V8      V9
chr1 3670715 3671052  338 3670940  8  4.18708 3.36070 2.11284
chr1 3671795 3672053  259 3671953 14  7.60682 4.53642 5.15603
chr1 4491782 4493687 1906 4491915 20 11.42107 5.49862 8.69791
chr1 4491782 4493687 1906 4492254 18  8.58343 4.41588 6.05103
chr1 4491782 4493687 1906 4492555 11  5.49023 3.77545 3.25097
chr1 4491782 4493687 1906 4492907 16  8.45705 4.66761 5.94094
我使用用户输入的值对文件应用多重筛选,但结果不正确

我的shell脚本

# Run : sh filter.sh 5 10 20 
fc=$2; pVal=$3; tags=$4
sed 1,29d $1 | awk '$6>int("'$tags'") && $7>int("'$pVal'") && int($8)>int('"$fc"')' | wc -l 
我使用3个值并过滤文件(前29行是标题),但输出错误。我签入了R,它应该是
18967
,但是使用上面的代码我得到了
13608
。我在值变量周围使用了int函数,但没有用。我应该重新格式化我的变量值还是缺少什么


谢谢

这不是awk中的数学错误

您需要使用
-v name=val
将参数传递给
awk
并简化awk命令:

awk -v tags=$tags -v pVal=$pVal -v fc=$fc '$6>tags && $7>pVal && int($8)>fc'

明白了,谢谢!!我还编辑了标题。