【发布时间】:2014-12-02 02:47:09
【问题描述】:
我正在尝试在 BASH 中格式化数字。我想复制 iptables 输出的字节/数据包数。
这里有一些例子:
258
591K
55273
37G
22244
2212
6127K
12M
114K
如你所见:
- 没有千位分隔符,
- 该字段的宽度最多为 5 个字符,
- 每个后缀是:无、K、M、G 等...
我搜索了有关 printf 的文档,但找不到任何可以以这种方式格式化数字的内容。有人知道怎么做吗?
谢谢。
【问题讨论】:
-
每个输出的输入数字是多少?为什么有些大于 1024 的值没有缩短为 K 版本?
-
这是查看规则时iptables的默认格式。但是,例如,可以使用 [iptables -vnxL INPUT] 找到完整的字节数。至于为什么不是所有人都皈依?不知道。如果我不得不猜测,我会说最初的程序员想要给出尽可能多的数字,最多可达 100,000。然后(因为字段只有 5 个字符宽)使用单个字符后缀进行转换。 :)
标签: bash numbers format printf