Bash 以科学计数法返回的数列?

Bash number sequence returned in scientific notation?

我正在尝试创建一个文件,其中每一行的所有数字都高达 7500 万。

我正在使用 Bash 在我的终端中输入:

seq 1 75000000 > myfile.csv

但是超过 100 万的任何东西都会变成科学记数法,我希望所有东西都是整数(即 7.31896e+07)

你知道如何实现吗?

观察这会产生整数:

$ seq  74999998 75000000
74999998
74999999
75000000

虽然这会产生浮点数:

$ seq -f '%.5g' 74999998 75000000
7.5e+07
7.5e+07
7.5e+07

seq 的输出格式由 -f 选项控制。

-f 选项如何应用于您的案例?一种可能是您的 shell 为 seq 定义了一个应用此选项的别名。例如:

$ alias seq="seq -f '%.5g'"
$ seq 74999998 75000000
7.5e+07
7.5e+07
7.5e+07

您可以通过 运行 bash 的内置 type 命令确定是否是这种情况:

$ type seq
seq is aliased to `seq -f '%.5g''

文档

来自 man seq:

   -f, --format=FORMAT
          use printf style floating-point FORMAT

seq 可以采用 printf 风格的格式字符串来控制其输出。 f 格式的 "precision" 为 0(即小数点后没有任何内容,小数点本身就没有)应该做你想做的:

$ seq 74999998 75000000
7.5e+07
7.5e+07
7.5e+07
$ seq -f %1.0f  74999998 75000000
74999998
74999999
75000000