seq 同时使用逗号和点作为小数分隔符
seq uses both comma and dot as a decimal separator
来自 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
为什么?我该如何解决?
这可能是因为 LANG
变量设置了语言环境设置并导致 seq
表现如此。目前还不清楚 为什么 但要修复它 EXPLICITLY 你可以我们 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
为了防止任何 区域设置(例如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; }'
来自 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
为什么?我该如何解决?
这可能是因为 LANG
变量设置了语言环境设置并导致 seq
表现如此。目前还不清楚 为什么 但要修复它 EXPLICITLY 你可以我们 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
为了防止任何 区域设置(例如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; }'