我有一个表格文件
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函数但是徒劳无功。我应该重新格式化我的变量值还是我错过了什么。
由于
答案 0 :(得分:2)
awk中没有数学错误。
您需要使用-v name=val
将参数传递给awk
并简化您的awk命令:
awk -v tags=$tags -v pVal=$pVal -v fc=$fc '$6>tags && $7>pVal && int($8)>fc'