Linux常用命令-numfmt

命令

numfmt

描述

Convert numbers from/to human-readable strings
转换数字格式

用法

1
numfmt [OPTION]... [NUMBER]...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Options:
--delimiter=X 指定字段分隔符,默认为空格
--field=N 替换输入字段N中的数字,默认为1
--format=FORMAT 指定输出内容,如%f,%10f
--from=UNIT 可读形式转数字,UNIT可选参数为none,auto,si,iec,iec-i
--from-unit=N 指定输入的单位
--grouping 使用本地定义的数字分组,如1,000,000
--header[=N] 如果标题无法转换则直接显示标题原始内容,默认为第1行
--invalid=MODE 指定警告消息级别,MODE可选参数为abort(默认),fail,warn,ignore
--padding=N 输出内容填充N个字符,+N表示右对齐,-N表示左对齐,如果输出宽度大于N则不填充
--round=METHOD 指定进位的方式,METHOD可选参数为up,down,from-zero(默认),towards-zero,nearest
--suffix=SUFFIX 指定后缀
--to=UNIT 数字转可读形式,UNIT可选参数为none,si,iec,iec-i,不支持auto
--to-unit=N 指定输出的单位

UNIT options:
none 保持不变
auto 接受可选的单/双字母后缀,1K=1000,1Ki=1024,1M,1Mi...
si 接受可选的单字母后缀,1K=1000,1M,1G...
iec 接受可选的单字母后缀,1K=1024,1M,1G...
iec-i 接受可选的两个字母后缀,1Ki=1024,1Mi,1Gi...

注意

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 数字转可读形式,si的进制是1000,所以1024会显示为1.1K
$ numfmt --to=si 1000
1.0K
$ numfmt --to=si 1024
1.1K
# iec的进制是1024,所以1000会显示为1000
$ numfmt --to=iec 1000
1000
$ numfmt --to=iec 1024
1.0K
$ echo 1000 | numfmt --to=si
1.0K
$ echo 1024 | numfmt --to=iec
1.0K
# 可读形式转数字
$ numfmt --from=si 1K
1000
$ numfmt --from=iec 1K
1024
$ echo 1K | numfmt --from=si
1000
$ echo 1K | numfmt --from=iec
1024
$ numfmt --from=auto 1024M
1024000000
$ numfmt --from=auto 1024Mi
1073741824
$ numfmt --from=auto 1G
1000000000
$ numfmt --from=auto 1Gi
1073741824

# 指定输入单位
$ numfmt --to=iec --from-unit=1K 1000
1000K
$ numfmt --to=iec --from-unit=1K 1024
1.0M
$ numfmt --to=iec --from-unit=1M 1024
1.0G
# 指定输出单位,并分组显示数字
$ numfmt --from=iec --to-unit=1K --grouping 1024M
1,048,576
$ numfmt --from=iec --to-unit=1K --grouping 1M 100M 1G
1,024
102,400
1,048,576
# 指定输出格式
$ numfmt --from=iec --to-unit=1K --format '1M is %f K' 1M
1M is 1024 K
# 指定后缀
$ numfmt --from=iec --to-unit=1K --suffix=K 1M
1024K

$ df -h
# 指定转换第4列数字为可读形式
$ df | numfmt --header --field 4 --to=iec --from-unit 1K
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1002056 0 979M 0% /dev
tmpfs 1013948 0 991M 0% /dev/shm
tmpfs 1013948 9608 981M 1% /run
tmpfs 1013948 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 1941068 16G 11% /
/dev/sda1 1038336 171572 847M 17% /boot
tmpfs 202792 0 199M 0% /run/user/0