Numfmt命令

时间:2020-03-21 11:47:25  来源:igfitidea点击:

Numfmt命令将数字转换为人类可读的格式。
它读取各种表示形式的数字,并根据指定的选项以人类可读的格式将其重新格式化。
如果没有给出数字,它将从标准输入中读取数字。
它是GNU coreutils软件包的一部分,所以不必费心安装它。
在此教程中,让我们通过一些实际示例来了解Numfmt命令的用法。

Numfmt命令教程及示例

想象一个复数,例如“ 1003040500”。
当然,数学忍者可以在几秒钟内轻松找到该数字的人类可读表示。
但这对我来说有点困难。
这是Numfmt命令提供帮助的地方。
运行以下命令以将其转换为易于阅读的形式。

$numfmt --to=si 1003040500
1.1G

让我们寻找一个比以前的数字还要长且复杂的数字。
“ 10090008000700060005”怎么样?
有点辛苦吧是的。
但是Numfmt命令将立即显示此数字的人类可读格式。

$numfmt --to=si 10090008000700060005
11E

其中si表示国际单位制(由systeme internationale缩写为SI,名称的法语版本)。

因此,如果使用si,则numfmt命令将根据国际单位制(SI)标准自动缩放数字。

Numfmt也使用以下单位选项。

  • iec和iec-i-根据国际电工委员会(IEC)标准的自动缩放数字。
  • 自动-使用此方法,带有'K','M','G','T','P','E','Z','Y'后缀的数字被解释为SI值,而带有' Ki','Mi','Gi','Ti','Pi','Ei','Zi','Yi'后缀被解释为IEC值。
  • 无-无自动缩放。

这是上述选项的更多示例。

$numfmt --to=iec 10090008000700060005
8.8E
$numfmt --to=iec-i 10090008000700060005
8.8Ei

我们已经看到了如何将数字转换为人类可读的格式。
现在让我们做相反的事情。
例如:我们将转换人类可读格式的数字。
为此,只需将“ --to”替换为“ --from”选项,如下所示。

$numfmt --from=si 1G
1000000000
$numfmt --from=si 1M
1000000
$numfmt --from=si 1P
1000000000000000

我们也可以使用iec和iec-i标准来做到这一点。

$numfmt --from=iec 1G
1073741824
$numfmt --from=iec-i 1Gi
1073741824
$numfmt --from=auto 1G
1000000000
$numfmt --from=auto 1Gi
1073741824

就像我已经提到的那样,当使用“自动”时,带有“ K”,“ M”,“ G”,“ T”,“ P”,“ E”,“ Z”,“ Y”后缀的数字被解释为SI值以及带有'Ki','Mi','Gi','Ti','Pi','Ei','Zi','Yi'后缀的数字被解释为IEC值。

Numfmt命令也可以与其他命令结合使用。
看下面的例子。

$echo 1G | numfmt --from=si
1000000000
$echo 1G | numfmt --from=iec
1073741824
$df -B1 | numfmt --header --field 2-4 --to=si
$ls -l | numfmt --header --field 5 --to=si

请注意,ls和df命令已经具有“-人类可读”选项,以人类可读形式显示输出。
以上示例仅用于演示目的。

我们也可以使用“ --format”或者“ --padding”选项来调整输出。

填充到5个字符,使用'--format'选项右对齐:

$du -s * | numfmt --to=si --format="%5f"

填充到5个字符,使用'--format'选项左对齐:

$du -s * | numfmt --to=si --format="%-5f"

填充到5个字符,使用'--padding'选项右对齐:

$du -s * | numfmt --to=si --padding=5

填充到5个字符,使用'--padding'选项左对齐:

$du -s * | numfmt --to=si --padding=-5

有关更多选项和用法,请参考手册页。

$man numfmt