numfmtで数字を読みやすく(その3)

numfmt続きです。
空白や改行だけでなく、区切り記号を指定することができます。

では、いつものように確認用の変換前データを作成。

takk@deb9:~/tmp$ seq -s, 1024 1024 `expr 1024 \* 8`
1024,2048,3072,4096,5120,6144,7168,8192
takk@deb9:~/tmp$

この,(カンマ)で区切られたデータを、区切り文字を指定せずにnumfmtへ渡すと、

takk@deb9:~/tmp$ !! | numfmt --to iec
seq -s, 1024 1024 `expr 1024 \* 8` | numfmt --to iec
numfmt: invalid suffix in input: `1024,2048,3072,4096,5120,6144,7168,8192'
takk@deb9:~/tmp$ 

エラーになりました。

区切り文字の指定は、-dオプション(デリミタ)を使います。
,(カンマ)を指定してみましょう。

takk@deb9:~/tmp$ !-2 | numfmt -d, --to iec
seq -s, 1024 1024 `expr 1024 \* 8` | numfmt -d, --to iec
1.0K,2048,3072,4096,5120,6144,7168,8192
takk@deb9:~/tmp$ 

おっと、全フィールド指定するための、–field -を忘れていました。

takk@deb9:~/tmp$ !-3 | numfmt -d, --to iec --field -
seq -s, 1024 1024 `expr 1024 \* 8` | numfmt -d, --to iec --field -
1.0K,2.0K,3.0K,4.0K,5.0K,6.0K,7.0K,8.0K
takk@deb9:~/tmp$ 

変換できましたね。

次は、K Mなどの単位ありからなしへの変換です。
–toの反対で、–fromを使います。

takk@deb9:~/tmp$ numfmt --from=iec 64K
65536
takk@deb9:~/tmp$ 

簡単ですね。

カンマ区切りでマトリクスを作ってみます。

takk@deb9:~/tmp$ for i in K M G T P;do seq -s, -f "%g$i" 5;done
1K,2K,3K,4K,5K
1M,2M,3M,4M,5M
1G,2G,3G,4G,5G
1T,2T,3T,4T,5T
1P,2P,3P,4P,5P
takk@deb9:~/tmp$ 

作成した単位付きデータのマトリクスを、一気に単位なしに変換してみましょう。

takk@deb9:~/tmp$ !! | numfmt -d, --field - --from iec
for i in K M G T P;do seq -s, -f "%g$i" 5;done | numfmt -d, --field - --from iec
1024,2048,3072,4096,5120
1048576,2097152,3145728,4194304,5242880
1073741824,2147483648,3221225472,4294967296,5368709120
1099511627776,2199023255552,3298534883328,4398046511104,5497558138880
1125899906842624,2251799813685248,3377699720527872,4503599627370496,5629499534213120
takk@deb9:~/tmp$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA