我正在尝试获取精确列的结果,该结果大于0
,小于10,000,000
。
我的文件如下:
799,799,0,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,0.000000
673,273,0,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,0.000000
941,741,0,0,,0,0,1,1,0,0,0,0,0,0,0,0,5157,5157,,9999998.140000
最后一列可以包含0.000000
和之间的任何值10,000,000
。
我需要将输出限制为大于0
和小于的值10,000,000
。
我尝试了以下命令:
awk -F"," '$21<"10000000"' | awk -F"," '$21>"0.000000"'
但 $21 的输出始终是 1000.000000
下面是输出示例:
647,790,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,1000.000000
600,796,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5300,5300,,1000.000000
950,797,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5300,5300,,1000.000000
答案1
$21<"10000000"
使用awk
字符串比较而不是数字比较。
尝试:
awk -F, '$NF>0 && $NF<10000000' <file
使用$NF
始终为您提供最后一个字段,您可以独立添加或删除其他字段。
答案2
这是我的回答:
gawk -F"," "$21<10000000 && $21 > 0" a
有了这个输出:
941,741,0,0,,0,0,1,1,0,0,0,0,0,0,0,0,5157,5157,,9999998.140000
我不明白你的 awk 如何生成 1000.000000 值,也不明白它如何能够将数字与字符串进行比较(你在条件中引用了一千万和零值)。您使用什么系统?