Linux中无指数表示法的序列生成

kno*_*001 1 linux seq

您好,我正在尝试使用 seq 命令生成数字序列

seq  830456481  831456481
Run Code Online (Sandbox Code Playgroud)

结果如下

8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
Run Code Online (Sandbox Code Playgroud)

不过,我想以不同的格式和指数符号得到我的输出。

Expected output

830456481
830456482
830456483
......
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?

Rob*_*ert 6

我的seq(MacOS 上的 v 8.32,带有brew)已经默认只打印数字(例如,830456481),所以我只是在这里猜测。man seq提到-f格式参数。你可以尝试

seq  -f "%f" 830456481 830456485
830456481.000000
830456482.000000
830456483.000000
830456484.000000
830456485.000000
Run Code Online (Sandbox Code Playgroud)

传递“%g”作为格式可以得到你看到的科学记数法。

seq  -f "%g" 830456481 830456485
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
8.30456e+08
Run Code Online (Sandbox Code Playgroud)

格式参数没有详细记录,您必须了解一些有关 Cprintf函数的知识才能正确使用。我可以指定“%.0f”来获得没有“.00000”的输出,就像普通的“%f”一样:

seq  -f "%.0f" 830456481 830456485
830456481
830456482
830456483
830456484
830456485
Run Code Online (Sandbox Code Playgroud)