来自this回答我正在尝试使用点作为小数分隔符输出一系列数字。
这有效:
$ LANG=en_US seq 0.1 0.1 0.8
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
$ LANG=en_US seq 0.1 0.1 1.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
但这不是:
$ LANG=en_US seq 0.1 0.1 0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0,9
为什么呢?我该如何解决?
答案 0 :(得分:2)
要阻止任何区域设置(例如LC_NUMERIC
,这可能是罪魁祸首)影响行为:
LC_ALL=C seq 0.1 0.1 0.9
那就是说,我根本不建议使用seq
。这是一个非标准命令,不保证在所有UNIX平台上都可用,或者在 可用时具有任何特定行为。一个支持浮点的替代方案,请考虑awk
:
LC_ALL=C awk -v min=0.1 -v max=0.9 -v inc=0.1 \
'BEGIN { cur=min; while (cur <= max) { print cur; cur += inc; }; exit; }'
答案 1 :(得分:1)
这可能是因为LANG
变量设置了区域设置并导致seq
表现得像这样。目前尚不清楚为什么,但为了解决这个问题明确,我们可以tr
。例如。
$ LANG=en_US seq 0.1 0.1 0.9 | tr "," "."
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9