通过 awk 限制输出

通过 awk 限制输出

我正在尝试获取精确列的结果,该结果大于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 值,也不明白它如何能够将数字与字符串进行比较(你在条件中引用了一千万和零值)。您使用什么系统?

相关内容