UNFORMAT磁盘大小的字符串 [英] Unformat disk size strings
问题描述
有一些办法,比如 1K
字符串转换为 1000
, 1M
到百万
等?我想,以避免被一百万和第三十一届家伙创造了10线或> 100个字符的单行黑客这一点。类似 iso2int 5MB
。
编辑:单位-t5MB''字节
工作,但该工具不可用。是否有任何简单的方法来转换的或者的 5M
或 5MB
和类似字节<? / p>
最大的解决方案是优雅,但它会在我的情况下工作,在最短的等值是最起码的sed -e'S / B //我; S / K / * 1000的I /; S / M / * 1000000 / I; S / G / * 1000000000 / I; S / T / * 1000000000000 / I'| BC
。
这样呢?
$回声1K + 10M| SED -eS / K / * 1024 /克; S / M / * 1024 * 1024 /|公元前
10486784
编辑:
的sed -e'S / T /公斤/ I; S /克/公里/ I; S / M / KK / I; S / K / * 1000 / IG; S / b //我'|公元前
Is there some way to convert strings like 1K
to 1000
, 1M
to 1000000
etc. with a single Bash command? I'd like to avoid being the one million and thirty-first guy to create a >10-line or >100-character one-liner hack for this. Something like iso2int 5MB
.
Edit: units -t '5MB' 'bytes
works, but that tool is not available. Are there any simple ways to convert either 5M
or 5MB
and similar to bytes?
max's solution was elegant, but the shortest equivalent which would work in my case is at the very least sed -e 's/b//i;s/k/*1000/i;s/m/*1000000/i;s/g/*1000000000/i;s/t/*1000000000000/i' | bc
.
Something like this?
$ echo "1K + 10M" | sed -e "s/K/*1024/g;s/M/*1024*1024/" | bc
10486784
Edit:
sed -e 's/t/kg/i;s/g/km/i;s/m/kk/i;s/k/*1000/ig;s/b//i' | bc
这篇关于UNFORMAT磁盘大小的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!