【问题标题】:AWK doesn't filter number 100 in decimal form (100.000) in output localeAWK 不会在输出区域设置中以十进制形式 (100.000) 过滤数字 100
【发布时间】:2021-05-03 01:00:36
【问题描述】:

首先感谢大家的帮助。我在使用 AWK 过滤时遇到问题,其值为 100.000,它与 100 相同,但使用小数。我有这个文件:

1   100
2   100.000
3   99.874
4   67.321

这是我的代码:

cat example.txt | awk '$2 >= 70 {print $2}'

生成的输出如下

100
99.874

如您所见,值 100.000 也必须出现。我的awk版本是mawk 1.3.4 20200120

【问题讨论】:

  • 我无法在 GNU awk 中重现这种行为当我运行它时,我在输出中得到 100.000。您正在使用哪个版本的awk,您的操作系统是什么?请务必提及这些细节,谢谢。
  • 你可以丢失cat和管道,只是awk ... file.txt
  • 结果一样
  • 我的awk版本是mawk 1.3.4 20200120
  • locale 的输出添加到您的问题(无评论)。

标签: bash awk locale


【解决方案1】:

行为取决于您的 locale 设置。

我建议:

LC_NUMERIC=C mawk '$2 >= 70 {print $2}' example.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多