中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

numfmt : 讓數(shù)字變得更容易理解

2018-07-02    來源:importnew

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

像?ls,?df,?du?這類命令都帶有一個(gè)選項(xiàng)可以將數(shù)字直接轉(zhuǎn)換成人類容易閱讀的形式來展現(xiàn)。 比如,直接執(zhí)行?df?時(shí),容量顯示的是多少個(gè)塊,而當(dāng)用?df -h?時(shí),容量會(huì)根據(jù)塊的數(shù)量轉(zhuǎn)換成G/M/K的形式。

[lujun9972@T520 ~]$ df
文件系統(tǒng)          1K-塊     已用     可用 已用% 掛載點(diǎn)
dev             1900280        0  1900280    0% /dev
run             1906932      868  1906064    1% /run
/dev/sda2      41022688 23631300 15277852   61% /
tmpfs           1906932    26204  1880728    2% /dev/shm
tmpfs           1906932        0  1906932    0% /sys/fs/cgroup
tmpfs           1906932     5156  1901776    1% /tmp
/dev/sda3      73005440 61682676  7571272   90% /home
tmpfs               100        0      100    0% /var/lib/lxd/shmounts
tmpfs               100        0      100    0% /var/lib/lxd/devlxd
tmpfs            381384        8   381376    1% /run/user/1000
[lujun9972@T520 ~]$ df -h
文件系統(tǒng)        容量  已用  可用 已用% 掛載點(diǎn)
dev             1.9G     0  1.9G    0% /dev
run             1.9G  868K  1.9G    1% /run
/dev/sda2        40G   23G   15G   61% /
tmpfs           1.9G   26M  1.8G    2% /dev/shm
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs           1.9G  5.1M  1.9G    1% /tmp
/dev/sda3        70G   59G  7.3G   90% /home
tmpfs           100K     0  100K    0% /var/lib/lxd/shmounts
tmpfs           100K     0  100K    0% /var/lib/lxd/devlxd
tmpfs           373M  8.0K  373M    1% /run/user/1000

不過對(duì)于那些沒有這類功能的命令該怎么辦呢?有單獨(dú)的一個(gè)命令來實(shí)現(xiàn)數(shù)字和易讀形式之間的轉(zhuǎn)換嗎? 答案是,還真有,這就是?numfmt. 而且?numfmt?是coreutils的一部分,無需另行安裝,真是良心。

1000進(jìn)制還是1024進(jìn)制?這是個(gè)問題

使用?numfmt?支持兩種轉(zhuǎn)換標(biāo)準(zhǔn),一種是 1K=1000,1M=1000K…的:

numfmt –to=si 數(shù)字
將數(shù)字轉(zhuǎn)換成易讀格式
numfmt --to=si 100000
100K

numfmt –from=si 易讀格式

將易讀格式轉(zhuǎn)換成數(shù)字

numfmt --from=si 100K
100000

還有一種是 1K=1024,1M=1024K…的:

numfmt –to=iec 數(shù)字
將數(shù)字轉(zhuǎn)換成易讀格式
numfmt --to=iec 100000
98K

numfmt –from=iec 易讀格式

將易讀格式轉(zhuǎn)換成數(shù)字

numfmt --from=iec 100K
102400

事實(shí)上,還有一種格式是 1Ki=1024,1Mi=1024Ki…的(即在單位后面有個(gè)i):

numfmt –to=iec-i 數(shù)字
將數(shù)字轉(zhuǎn)換成易讀格式
numfmt --to=iec-i 100000
98Ki

numfmt –from=iec-i 易讀格式

將易讀格式轉(zhuǎn)換成數(shù)字

numfmt --from=iec-i 100Ki

當(dāng)將易讀格式轉(zhuǎn)換會(huì)數(shù)字時(shí),可以將格式設(shè)置為?auto, 這樣?numfmt?會(huì)自動(dòng)判斷應(yīng)該是按1000來轉(zhuǎn)換還是按1024來轉(zhuǎn)換,其選擇的規(guī)則為:

- 若格式的單位后面不帶?i?則使用1000進(jìn)制來轉(zhuǎn)換

numfmt --from=auto 100K
100000

- 若格式的單位后面不帶?i?則使用1024進(jìn)制來轉(zhuǎn)換

numfmt --from=auto 100Ki
102400

一次進(jìn)行多個(gè)轉(zhuǎn)換

numfmt?能夠一次性進(jìn)行多個(gè)轉(zhuǎn)換,只需要在后面羅列數(shù)字或者易讀格式就行了。

numfmt --to=iec 100000 20000 40000
98K
20K
40K
numfmt  --from=iec 98K 20K 40K
100352
20480
40960

從中你也可以看出,轉(zhuǎn)換的結(jié)果其實(shí)并不會(huì)特別的精確

指定數(shù)字的單位

使用?--from-unit?可以指定輸入數(shù)字的單位,比如:

numfmt --to=si --from-unit K 1000
1.0M

你會(huì)發(fā)現(xiàn),輸出是?1M?而不是?1K

同理,使用?--to-unit?可以指定輸出數(shù)字的單位:

numfmt --from=si --to-unit K 1M
1000

可以看到,輸出是是?1000?而不是?1000000

指定輸出的格式

使用?--format?可以指定輸出的格式,其格式語法類似于C語言中?printf?的格式說明,但僅限于格式化一個(gè)浮點(diǎn)數(shù)。比如:

輸出右對(duì)齊,占10位字符

[lujun9972@T520 ~]$ numfmt --to=si --format "%10f" 1000
      1.0K

輸出左對(duì)齊,占10位字符

[lujun9972@T520 ~]$ numfmt --to=si --format "%-10f|" 1000
1.0K      |

為了清晰,我在字符串最后加了一個(gè)?|

輸出右對(duì)齊,占10位字符,不夠的位用0填充

[lujun9972@T520 ~]$ numfmt --to=si --format "%010f" 1000
00000001.0K

與其他命令整合

當(dāng)?numfmt?沒有指定數(shù)字或易讀格式來轉(zhuǎn)換時(shí),它會(huì)從stdin中讀取要轉(zhuǎn)換的內(nèi)容

echo 1000 |numfmt --to=si
1.0K

然而,對(duì)于像?df?這樣的命令,除了數(shù)字外,還有其他內(nèi)容怎么辦呢?

這個(gè)時(shí)候,我們可以使用?--header?來跳過命令輸出前面幾行的標(biāo)題,使用?field?來指定轉(zhuǎn)換某幾列的內(nèi)容。

比如,我們可以用下列命令來讓?numfmt?只轉(zhuǎn)換?df?命令從第3行開始的2到4列數(shù)字,保持其他內(nèi)容不變

df -B1 | numfmt --header=2 --field 2-4 --to=iec

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:kafka 源碼分析3: Producer

下一篇:Kafka 源碼分析2 : Network相關(guān)