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

时间:2017-11-09 23:47:00

标签: bash shell integer largenumber

我试图创建一个文件,每行的所有数字都增加了7500万。

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

seq 1 75000000 > myfile.csv

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

你知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

seq可以使用printf样式的格式字符串来控制其输出。具有"精度的f格式" 0(即小数点后面没有任何内容,小数点本身除外)应该做你想做的事情:

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

答案 1 :(得分:1)

注意这会产生整数:

$ 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