【发布时间】:2018-09-26 09:52:39
【问题描述】:
我发现了一些关于此的问题,但没有一个真正回答我的问题。
我有一个这样的表格文件:
2 10610 0 0 0 0.0105292
2 10649 0 0 0 0.041959
2 10682 0 0 0 0.0449746
2 10705 0 0 0 0.0441639
2 10797 2 0 0 0.0342728
2 10955 0 0 0 0.0136986
2 10957 0 0 0 0.0135135
2 11124 0 0 0 0.0583367
2 11336 1 0 0 0.0219502
我使用了这个命令:
awk '{if ($6 > 0.4) print $6}' myfile
这是输出:
0.0105292
0.041959
0.0449746
0.0441639
0.0342728
0.0136986
0.0135135
0.0583367
0.0219502
它返回第 6 列的所有值。在这里我不应该得到任何结果,因为条件没有得到尊重。所以我猜 awk 并没有将 $6 视为浮点数。
我尝试了其他语法,但仍然遇到同样的问题。
我也尝试了第一列的命令,它在那里工作......
ps:我在 MacOSX 上
编辑:虽然当我使用 awk '{print $6}' 时它可以工作
【问题讨论】:
-
您的
awk可能已损坏。试试这个awk '$6+0>0.4{print $6}' -
您的意思是
0.4还是0.04? -
你知道你的情况永远不是真的,对吧?您第 6 列中的所有数据都低于
0.4。也许您的意思是0.04?在这种情况下,您的awk命令seems to work well -
感谢您解决问题。问题出在您的语言环境设置上,因此请尝试使用指定的 C 语言环境运行它:
LC_ALL=C awk '{if ($6 > 0.4) print $6}' myfile,一旦您确认可以修复它,我将添加一个答案并说明原因。 -
成功了!谷歌搜索后,我不确定这里发生了什么,但它确实有效!谢谢